build.gradle 获取 git 版本号 获取当前时间 自定义jar的名字

人盡茶涼 提交于 2020-07-27 15:06:51

以前这个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打名称。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!