我正在將一個項目從ant移植到gradle。一切都很好,只有一個問題存在:目前我們有一個基於自定義的基於ant-contrib的任務,用於在repo上執行git命令,以讀取最新的xy-release標籤以獲取版本號(和生成的jar文件的版本,如project- xy.jar)。如我所見,我需要一些插件。可悲的是,通過可用的插件來看,沒有任何東西可以幫助我(存在一些與git相關的插件,但他們的目標是其他的,例如使成爲發行版,因此標記回購,而不是讀取已經制作的標籤)。 所以我需要幫助達到我的目標。我需要在Gradle中發明一切嗎?我知道我可以導入現有的ant構建文件,但我並不想。Gradle:讀取最新版本的xy-release GIT標籤
0
A
回答
0
既然git有這個命令,git describe
,它應該是非常微不足道的。只需調用git並在輸出中讀取即可。爲了讓剛剛過去的* -release標籤,確切的命令是
git describe --abbrev=0 --match=*-release
(我不知道它是否是正則表達式或水珠;如果是正則表達式,那就需要.*-release
)。如果您的發佈標籤未註釋,請添加--tags
。
1
或者,只重用現有的Ant任務。無需導入Ant構建。
1
好吧,我試圖在Gradle中實現相同的舊東西。 (因爲我逃離螞蟻/常春藤,所以我不想保留舊東西)。這裏是輸出(可能是跛腳,因爲我是Gradle和Groovy的新手)。有用。
jar {
dependsOn configurations.runtime
// get the version
doFirst {
new ByteArrayOutputStream().withStream { execOS ->
def result = exec {
executable = 'git'
args = [ 'describe', '--tags', '--match', '[0-9]*-release', '--dirty=-dirty' ]
standardOutput = execOS
}
// calculate version information
def buildVersion = execOS.toString().trim().replaceAll("-release", "")
def buildVersionMajor = buildVersion.replaceAll("^(\\d+).*\$", "\$1")
def buildVersionMinor = buildVersion.replaceAll("^\\d+\\.(\\d+).*\$", "\$1")
def buildVersionRev = buildVersion.replaceAll("^\\d+\\.\\d+\\.(\\d+).*\$", "\$1")
def buildTag = buildVersion.replaceAll("^[^-]*-(.*)\$", "\$1").replaceAll("^(.*)-dirty\$", "\$1")
def dirty = buildVersion.endsWith("dirty")
println("Version: " + buildVersion)
println("Major: " + buildVersionMajor)
println("Minor: " + buildVersionMinor)
println("Revision: " + buildVersionRev)
println("Tag: " + buildTag)
println("Dirty: " + dirty)
// name the jar file
version buildVersion
}
}
// include dependencies into jar
def classpath = configurations.runtime.collect { it.directory ? it : zipTree(it) }
from (classpath) {
exclude 'META-INF/**'
}
// manifest definition
manifest {
attributes(
'Main-Class': 'your.fancy.MainClass'
)
}
}
相關問題
- 1. 通過git標籤自動化Android版本的Gradle腳本
- 2. AssemblyInfo的Git標籤版本
- 3. 獲取最新的穩定版本git
- 4. Bash最新版本的Git?
- 5. 更新git中的遠程標籤(標記最新的穩定版本)
- 6. 如何獲取git中的最新版本標籤和與頭部的距離
- 7. Git標籤發佈版本?
- 8. 使用git獲取最新版本
- 9. Git結帳最新標籤
- 10. Gradle的最新版本無法找到
- 11. 從Artifactory下載Gradle的最新版本
- 12. 從SVN獲取最新版本的標籤
- 13. Gradle不從Artifactory檢索最新版本
- 14. Gradle同步失敗的最新版本的Gradle 2.14.1
- 15. 更新Git到最新版本(mac)
- 16. Gradle獲取某些庫的最新版本
- 17. 如何使用連接到最新版本標籤的mercurial或git子庫?
- 18. 升級到最新版本的Git
- 19. 如何回到Git的最新版本?
- 20. 確定最新收到的git標籤
- 21. 編程(JAVA)獲取最後的Git標籤放置版本信息軟件
- 22. Git標籤和分支版本是?
- 23. git版本相對於特定標籤
- 24. 基於Git的Gradle自動版本化
- 25. 如何從git獲取指定標籤版本的Chromium代碼?
- 26. 使用最新穩定Gradle版本創建gradle包裝器
- 27. Android gradle插件與最新Gradle版本兼容
- 28. 標記最新版本?
- 29. Gradle新版本和內部版本
- 30. git:如何同步到最新版本