問題
Maven的解釋:詹金斯行家拆分版本範圍
versions:update-parent -N -DallowSnapshots=true -DparentVersion=[1.8.0,1.9.0)
爲:
versions:update-parent -N -DallowSnapshots=true '-DparentVersion=[1.8.0' '1.9.0)'
我想在Jenkinsfile管道運行Maven像這樣(加換行可讀性,這全部在一行上):
sh "mvn release:clean release:prepare -X
-DcheckModificationExcludeList=pom.xml,pom.xml.versionsBackup
-Dresume=false
-DpreparationGoals=\'clean install -Dmaven.test.failure.ignore=true'
-Darguments=\'-Dbuild.phase.beforeDeploy -DskipTests=true\'
-DcompletionGoals=\'versions:update-parent -N -DallowSnapshots=true -DparentVersion=[1.8.0,1.9.0)\'
[email protected]{project.groupId}[email protected]{project.artifactId}[email protected]{project.version}"
當Maven開始執行完成目標部分時,它會分割版本範圍,將其視爲2個單獨的參數並以錯誤退出。相關日誌片段:
[INFO] Executing goals 'versions:update-parent -N -DallowSnapshots=true -DparentVersion=[1.8.0,1.9.0)'...
[DEBUG] Using ${maven.home} of: '/home/jenkins/tools/hudson.tasks.Maven_MavenInstallation/mvn-3.2.5'.
[DEBUG] Executing: /bin/sh -c cd /home/jenkins/workspace/ife-jen-maven-runner_master-6CIUKZ3STQA5HR4E2RYGZ5GBNFZPFT7UYLMWJ5EMFIBJ6ATW7RUA/appdir && /home/jenkins/tools/hudson.tasks.Maven_MavenInstallation/mvn-3.2.5/bin/mvn -X -D maven.repo.local=/home/jenkins/.m2/repository -s /tmp/release-settings1714400534004224741.xml -D skipTests=true -D build.phase.beforeDeploy=true -P nexus versions:update-parent -N -DallowSnapshots=true '-DparentVersion=[1.8.0' '1.9.0)'
[INFO] [DEBUG] === REACTOR BUILD PLAN ================================================
[INFO] [DEBUG] Project: my-project:pom:6.4.123-SNAPSHOT
[INFO] [DEBUG] Tasks: [versions:update-parent, 1.9.0)]
INFO] [ERROR] Unknown lifecycle phase "1.9.0)". You must specify a valid lifecycle phase...
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.3:prepare (default-cli) on project grin-colis: Maven execution failed, exit code: '1' -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.3:prepare (default-cli) on project grin-colis: Maven execution failed, exit code: '1'
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)
你有沒有遇到類似的問題?你是怎麼處理的?
設置構建是在Linux多克爾從屬運行(容器沒有被詹金斯管理)。
版本- 詹金斯2.46.1
- 管道2.5
- Maven的集成插件2.16
- 集裝箱JDK的OpenJDK 1.8.0_121
- 工作JDK的Oracle JDK 6u45(Java 6中要求的項目,使用自動安裝選項並在Jenkinsfile工具部分聲明)
- Maven 3.2.5 個
- 的Maven插件版本2.4(POM中聲明)
單引號符號使用不收集,是'-DparentVersion =「[1.8.0 1.9.0)」' –
的第一件事,我不不明白的是,如果你使用Maven-release-plugin,爲什麼要使用versions-maven-plugin?你爲什麼重新定義「準備目標」和「完成目標」?有什麼需要在發佈過程中更新父母? – khmarbaise
@khmarbaise我不是發佈過程本身的作者。我只能將它移植到Jenkins管道,最好儘可能少地改變它。 –