【发布时间】:2019-02-23 06:13:08
【问题描述】:
当我在我的 jenkins 管道中运行此命令时,我得到一个错误的替换错误
sh 'mvn build-helper:parse-version versions:set \
-DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.nextIncrementalVersion}-SNAPSHOT \
-DgenerateBackupPoms=false \
-DprocessAllModules \
-DgenerateBackupPoms=false'
这是这种情况下的错误信息-
[code]运行shell脚本
/apps/jenkins/latest/workspace/ess-holani_master-3YNVBB6LFQA3QFK5NHYV57DW5HGSNALVGFJTJ4D6T72QVPJG4CDA/code@tmp/durable-374bc417/script.sh: 第 2 行: -DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.nextIncrementalVersion}-SNAPSHOT: 替换不好
脚本返回退出代码 1
但这行得通 ->
sh 'mvn build-helper:parse-version versions:set \
-DnewVersion=\\\${parsedVersion.majorVersion}.\\\${parsedVersion.minorVersion}.\\\${parsedVersion.nextIncrementalVersion}-SNAPSHOT \
-DgenerateBackupPoms=false \
-DprocessAllModules \
-DgenerateBackupPoms=false'
此命令按预期提升我的 pom 版本。
当我运行上述命令时登录 jenkins shell
[code]运行shell脚本
mvn build-helper:parse-version 版本:set '-DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.nextIncrementalVersion}-SNAPSHOT' -DgenerateBackupPoms=false -DprocessAllModules -DgenerateBackupPoms=false
在这里也可以使用双引号 -
sh "mvn build-helper:parse-version versions:set \
-DnewVersion=\\\${parsedVersion.majorVersion}.\\\${parsedVersion.minorVersion}.\\\${parsedVersion.nextIncrementalVersion}-SNAPSHOT \
-DgenerateBackupPoms=false \
-DprocessAllModules \
-DgenerateBackupPoms=false"
我想了解为什么我们需要在这个脚本中添加一个额外的 '\\\' ?
michael works 建议的答案。
我也试过了
sh "mvn build-helper:parse-version versions:set \
-DnewVersion='\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion}-SNAPSHOT' \
-DgenerateBackupPoms=false \
-DprocessAllModules \
-DgenerateBackupPoms=false"
我在结束 ' 之前删除了 \ 。这也奏效了。
【问题讨论】:
-
在 Jenkins 管道中使用真正的单引号还是双引号?
-
编辑了我要回答的问题。
-
在不使用转义反斜杠时能否请您发布错误?
-
你确定第二个例子(
's 和\\\$)确实有效。在这种情况下,我假设 Maven 将版本设置为\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion}-SNAPSHOT(无替换)。 -
编辑了我的问题以回答您的问题。是的,它确实可以使用 ' 和 \\\
标签: maven jenkins-pipeline maven-release-plugin jenkins-groovy maven-versions-plugin