首页 > 解决方案 > 替换 pom.xml 文件 jenkins 管道中的 SNAPSHOT

问题描述

我正在尝试替换为 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"

在詹金斯管道中执行的命令:

sed -i -e 's/\<abc.version\>[-[:alnum:]./]\{1,\}\<\/abc.version\>/\<abc.version\>234-SNAPSHOT\<\/abc.version\>/' services/spark-jobs/pcs/pom.xml

这不会替换 pom.xml 中的版本

知道我在这里缺少什么吗?

标签: jenkinssedjenkins-pipeline

解决方案


您可以使用管道实用程序步骤直接读取 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(如果您不想将其推送到 git repo,请将此通配符包含在 .gitignore 中) .


推荐阅读