我正在尝试替换Jenkins文件中的pom.xml中的快照版本。
从:
<abc.version>123-SNAPSHOT</abc.version>
123-SNAPSHOT可以是任何快照版本。
至:
<abc.version>234-SNAPSHOT</abc.version>
我尝试了多个在Mac OS中运行良好但在我将它们放入Jenkins管道时失败的命令。
Jenkins日志中生成的命令在Mac OS中也可以正常工作,但不执行替换。
以下是我从Jenkins管道中复制的一些命令,这些命令在Mac中运行良好,但在jenkins管道本身中不执行替换。
詹金斯的逃脱命令:
sh "sed -i -e 's/\\<abc.version\\>[-[:alnum:]./]\\{1,\\}\\<\\/abc.version\\>/\\<abc.version\\>234-SNAPSHOT\\<\\/abc.version\\>/' services/spark-jobs/pcs/pom.xml"
在jenkins管道中执行的命令:
sed -i -e 's/\<abc.version\>[-[:alnum:]./]\{1,\}\<\/abc.version\>/\<abc.version\>234-SNAPSHOT\<\/abc.version\>/' services/spark-jobs/pcs/pom.xml
这不会取代pom.xml中的版本
知道我在这里缺少什么吗?
您可以通过传递管道实用程序步骤直接读取Jenkinsfile中的pom.xml属性
def pomModel = readMavenPom
def pomVersion = pomModel.getVersion().replace("123", "234")
参考:https://jenkins.io/doc/pipeline/steps/pipeline-utility-steps/
如果要在pom.xml中重写版本,可以使用mvn mojo
mvn versions:set -DnewVersion=234-SNAPSHOT
此步骤使用较新版本234-SNAPSHOT重写pom.xml文件,旧pom.xml备份为pom.xml.versionsBackup(在.gitignore中包含此通配符,如果您不想将其推送到git repo) 。