Maven Jenkins在POM内自动更新版本



是否有一个目标,我可以调用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

最新更新