在Jenkins管道中使用build-helper-plugin增量Maven project.version

时间:2018-12-09 13:41:50

标签: maven jenkins jenkins-pipeline

您可以使用maven-build-helper-plugin来解析版本,然后使用maven-version-plugin来设置新版本(请参阅此blog):

clean build-helper:parse-version versions:set -DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.nextIncrementalVersion} versions:commit

当命令作为Maven作业中的“ maven目标” -prebuild-step执行时,此方法很好用。

现在,我正在尝试将我所有的Maven作业转换为管道作业。

withMaven(
  // Maven-Installation
  maven: "${MavenHelper.MAVEN3D3D9}") {

  String command = 'mvn build-helper:parse-version versions:set -DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.nextIncrementalVersion} versions:commit -f ' + komponente.getPomPath()

  sh(command)      
} 

在shell脚本尝试解析这些变量时,这总是给我一个bad substitution错误。但是在这种情况下,变量在执行期间由maven-build-helper-plugin填充。

  

DnewVersion = $ {parsedVersion.majorVersion}。$ {parsedVersion.minorVersion}。$ {parsedVersion.nextIncrementalVersion}:替代错误

我已经尝试通过DnewVersion=\${parsedVersion.majorVersion}....对其进行转义,但仍然会遇到相同的错误。

关于在不将其传递给版本插件之前手动对其进行增加的任何建议。

1 个答案:

答案 0 :(得分:0)

以下内容有效:

pipeline {
    agent any
    tools {
        maven 'Maven 3.6.0'
    }
    stages {
        stage('Change Version') {
            steps {
                sh 'mvn build-helper:parse-version versions:set -DnewVersion=\\${parsedVersion.majorVersion}.\\${parsedVersion.minorVersion}.\\${parsedVersion.nextIncrementalVersion}'
                sh "mvn build-helper:parse-version versions:set -DnewVersion=\\\${parsedVersion.majorVersion}.\\\${parsedVersion.minorVersion}.\\\${parsedVersion.nextIncrementalVersion}"
            }
        }
    }
}