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

时间:2018-09-11 02:13:01

标签: jenkins sed jenkins-pipeline

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

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

1 个答案:

答案 0 :(得分: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)。