如何訪問由Teamcity執行的Gradle腳本中的內部版本號和VCS簽出號碼?在Gradle構建腳本中訪問TeamCity內部版本號
在Ant中,我可以分別使用${build.number}
和${build.vcs.number.1}
。
謝謝。
如何訪問由Teamcity執行的Gradle腳本中的內部版本號和VCS簽出號碼?在Gradle構建腳本中訪問TeamCity內部版本號
在Ant中,我可以分別使用${build.number}
和${build.vcs.number.1}
。
謝謝。
這些僅僅是TeamCity爲Ant/Gradle JVM設置的JVM系統屬性。您可以使用通常的Java方式訪問它們,例如System.getProperty("build.number")
。
如果您正在開發Android應用程序,您可以訪問build.number
相應地更新apk文件名:
defaultConfig {
applicationId "com.mydemoci"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "0.7"
ext.buildNumber = System.getProperty("build.number") ?: "Regular"
archivesBaseName = "$applicationId-v$versionName-b$buildNumber"
}
爲了本地測試只是運行gradlew clean build -Dbuild.number=123
由於TeamCity的9.1.5的這個改變。 「屬性」(「system」和「teamcity」)屬性都被設置爲項目ext屬性。
閱讀overveiw頁https://confluence.jetbrains.com/display/TCD9/Configuring+Build+Parameters#ConfiguringBuildParameters-ConfigurationParameters使用「系統」的時候很混亂(在「系統屬性」)讓我以爲他們設置爲JVM系統性質在所以我想爲這裏所描述的搖籃機制: https://docs.gradle.org/current/userguide/build_environment.html 它說使用「org.gradle.project」。 ..加上TeamCity的說,使用「系統」。我試圖設置gradle屬性「repositoryUrl」爲「system.org.gradle.project.repositoryUrl」... 這沒有奏效。加入「屬性」,在球隊的城市的Gradle命令表明,有一個gradle這個財產被稱爲「org.gradle.project.repositoryUrl」
通過試驗和錯誤我在無意中發現明顯...正要報告這是一個文檔錯誤..但後來發現它在文檔中
摘要:在TeamCity的9.1.5+使用
system.<propertyName>
如
system.repositoryUrl
在搖籃這些accessable爲rootProject(或項目)「屬性」(而不是「系統屬性」 ......如
println repositoryUrl
println project.repositoryUrl
println rootProject.repositoryUrl
println project.properties["repositoryUrl"]
println rootProject.ext.repositoryUrl
println "${repositryUrl}"
assert hasProperty("repositoryUrl")
和做同樣的事情的500種其他方式。
再次感謝 – Paul
請注意,這個答案現在有點過時了,假設在TeamCity中使用「Gradle」runner(隱式應用TeamCity定義的初始化腳本),您現在必須做這樣的事情:'' project.teamcity [「build.number」]'。[查看這個問題的其他細節。](http ://www.stackoverflow.com/questions/20189846/how-can-i-define-the-teamcitybuild-number-property-in-gradle-from-command-li) – superEb
任何想法如何訪問TeamCity VCS中的Android應用程序版本號標籤? – jimmy0251