jenkins - 替换 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 中的版本
知道我在这里缺少什么吗?
解决方案
您可以使用管道实用程序步骤直接读取 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 中) .
推荐阅读
- postgresql - Postgres 11 FDW 找不到分区表
- verilog - 多个冲突的 reg 驱动程序仅分配在一个总是块中
- javascript - 选中复选框“其他”时显示文本框
- shopify - 如何添加检查以查看 Shopify 上的集合是否可用/已发布?
- python - 考虑已经删除了 6 行,为什么索引的范围仍然相同?
- python - 如果路径输入是空目录,“os.walk”会在第一次迭代时引发 StopIteration 异常吗?
- python - 如何修复“'audiogrep' 未被识别为内部或外部命令”?
- javascript - ckEditor 缓存了它的 JS 文件夹?
- python - 如何使用多个条件更改 numpy 数组中的每个值
- azure - 获取有关我的租户中用户的更多信息