build.gradle 獲取 git 版本號 獲取當前時間 自定義jar的名字

以前這個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打名稱。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章