在pom.xml文件jenkins管道中替换SNAPSHOT

问题描述 投票:0回答:1

我正在尝试替换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中的版本

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

jenkins sed jenkins-pipeline
1个回答
0
投票

您可以通过传递管道实用程序步骤直接读取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) 。

© www.soinside.com 2019 - 2024. All rights reserved.