是否有一个目标,我可以调用maven在每次触发构建时定期增量更新POM文件版本?
<version>2.22.0.4</version>
更新为:
<version>2.22.0.5</version>
我知道我可以调用命令-DdevelopmentVersion=2.22.0.5手动更新到该版本,但我希望maven知道它应该通过每次递增1自动调整POM文件版本标签。
这可能吗?
您可以使用Maven版本插件作为构建调用的一部分。
这是我的方法:
stage('Update version') {
steps {
script {
//get current version from pom.xml
JAR_FINAL_VERSION = sh (
script: 'mvn spring-boot:build-info | grep Building | awk '{split($0,r," "); print r[4]}'',
returnStdout: true
).trim()
//get major version
MAJOR_VERSION = sh (
script: "echo ${JAR_FINAL_VERSION} | awk '{split($0,r,"-"); print r[1]}' | awk '{split($0,r,"."); print r[1] "." r[2]}' ",
returnStdout: true
).trim()
//get the minor version and +1
UPDATED_VERSION = sh (
script: "echo ${JAR_FINAL_VERSION} | awk '{split($0,r,"-"); print r[1]}' | awk '{split($0,r,"."); print r[3]}' | awk '{value=1+$1} END{print value}' ",
returnStdout: true
).trim()
//update version
sh "mvn versions:set -DnewVersion=${MAJOR_VERSION}.${UPDATED_VERSION}-SNAPSHOT"
//git config
sh "git config user.email asher@runnable.run"
sh "git config user.name asher"
//checkout new branch, named your branch name
sh "git checkout -b ${params.GIT_Branch}"
sh "git commit -a -m 'Triggered Build: update pom version'"
//push to github
sh "git push -u origin ${params.GIT_Branch}"
}
}
}
让我解释一下上面的内容:
首先,我们可以使用mvn spring-boot:build-info
获得pom版本,然后通过shell过滤出所需的信息并将其分配给JAR_FINAL_VERSION
。
然后对JAR_FINAL_VERSION
进行手术;如果是JAR_FINAL_VERSION=1.0.1
,则MAJOR_VERSION
为1.0,执行以下命令
echo ${JAR_FINAL_VERSION} | awk '{split($0,r,"-"); print r[1]}' | awk '{split($0,r,"."); print r[1] "." r[2]}'
以同样的方式获取次要版本和+1,将其分配给UPDATED_VERSION
,并通过以下命令实现:
echo ${JAR_FINAL_VERSION} | awk '{split($0,r,"-"); print r[1]}' | awk '{split($0,r,"."); print r[3]}' | awk '{value=1+$1} END{print value}'
接下来,我们需要更新pom.xml中的版本,这可以通过命令mvn versions:set -DnewVersion=1.0.2
最后几个步骤是在当前的Jenkins中配置git,然后提交并推送到GitHub