以前這個gradle都是給Android使用的,萬萬沒想到,Java的其它項目也能使用,甚至能替代maven或者說maven和gradle項目是可以互相轉換的。還有就是在使用svn來管理項目的時候,每個svn版本都對應一個數字,但是換了git之後,每個提交記錄就不是簡單的生成個int數字,還是遞增的數字了,對應的是個hash值,類似Java對象的hashcode,這個時候就希望,每次項目打包之後,產生出來的jar包帶上這個git版本號,雖然不似svn那樣一個簡單的int數字就能說明版本,但是git的hash值還是可以湊合用的,也能對應找到提交版本記錄。
首先在最外層的根 build.gradle文件裏面定義幾個全局的方法,子模塊項目就可以直接使用,而不用再複製一次。
static def gitHashAndBuildTime() {
return "-" + getGitSHA() + "-" + releaseTime()
}
static def releaseTime() {
return new Date().format("yyyy-MM-dd HH:mm", TimeZone.getTimeZone("GMT+08:00"))
}
static def getGitSHA() {
return 'git rev-parse --short HEAD'.execute().text.trim()
}
releaseTime()方法:獲取當前的時間。日期格式化,差不多就是上面的形式。根Java的日期格式化差不多。
getGitSha()方法:就是獲取當前分支的 git hashcode的值。
gitHashAndBuildTime() 方法:也是全局變量,直接把上面的2個值拼在一起,自模塊打包jar的時候,就可以直接使用了。
也可以單獨調用下面的2個方法。
使用這幾個定義的方法
def artifactId = "xxx-lxk"
jar.doFirst {
manifest {
attributes("Manifest-Version": "1.0",
"Created-By": 'x',
"Implementation-Title": 'xxx',
"Implementation-Version": version,
"Implementation-Vendor": "xxx",
"Class-Path": configurations.compile.collect { it.getName() }.join(' ')
)
}
baseName = artifactId + gitHashAndBuildTime()
}
重點就是在打jar包打時候,有個關鍵字 baseName,修改這個值,就會修改最終生成打jar打名稱。