我想把 pom.xml 里面的 SNAPSHOT 版本替换成正式的,这个正则该怎么写呢?

2021-05-26 22:55:00 +08:00
 Euthpic

pom.xml:

<a-api>1.0.0</a-api>
<b-api>1.0.0-test-SNAPSHOT</b-api>

想把'<b-api>1.0.0-test-SNAPSHOT</b-api>'替换成'<b-api>1.0.0</b-api>' 然后我写了这么个正则:

sed -i -s 's/-(.*?)-SNAPSHOT<\/b-api>/<\/b-api>/'

但是匹配到的是'-api>1.o-test-SNAPSHOT</b-api>',最先匹配原则覆盖了最短匹配. 另外一个思路是先匹配到对应的 tag,里面的 version 根据分隔符'-'切割成三部分,判断第三部分是否为 SNAPSHOT,若是则把第二部分和第三部分删掉. 但是不会写对应的正则,大家有什么好的想法吗?

1058 次点击
所在节点    正则表达式
8 条回复
Euthpic
2021-05-26 23:00:38 +08:00
pom 的格式是<project>version-branch-SNAPSHOT</project>,要替换成<project>version</project>
gstqc
2021-05-26 23:18:48 +08:00
`sed -i 's/-test-SNAPSHOT//g' pom.xml`
Euthpic
2021-05-26 23:27:34 +08:00
@gstqc 可惜 test 是无法确定的分支名.
fannas
2021-05-27 01:35:12 +08:00
我猜你打算 cicd 做 release 。可以用 agent 注入版本号哈
oott123
2021-05-27 07:50:32 +08:00
你把 <b-api> 也加进去不就完了。。
hexiaowu1993
2021-05-27 14:11:35 +08:00
这个有插件的,尽量别自己写正则。
idea 搜索 maven version 插件 或者是在 maven plugins 引入 versions-maven-plugin
he1a2s0
2021-05-28 03:16:05 +08:00
branch 里面没有-的话,可以简单的把 (.*?) 换成 [^-]\+
acr0ss
2021-05-31 12:57:57 +08:00
若 version 由 \w (字母数字下划线) 构成,则可如此匹配:

(-\w+)?-SNAPSHOT

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/779442

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX