java git 获取 版本信息_build.gradle 获取 git 版本号 获取当前时间 自定义jar的名字...

本文介绍了如何在Java项目中利用Gradle替代Maven,并获取Git版本信息来定制jar包的名称。通过定义全局方法获取Git的SHA哈希值和当前时间,将它们整合到构建过程中,确保每次打包的jar包带有独特的版本标识。
摘要由CSDN通过智能技术生成

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

f9e426b5ce0d47bc4b44665fe6414a99.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值