Euthpic

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

  •  
  •   Euthpic · May 26, 2021 · 2232 views
    This topic created in 1990 days ago, the information mentioned may be changed or developed.

    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,若是则把第二部分和第三部分删掉. 但是不会写对应的正则,大家有什么好的想法吗?

    8 replies  •  2021-05-31 12:57:57 +08:00
    Euthpic
    Euthpic
    OP
    May 26, 2021
    1
    pom 的格式是<project>version-branch-SNAPSHOT</project>,要替换成<project>version</project>
    0ZXYDDu796nVCFxq
    0ZXYDDu796nVCFxq
    May 26, 2021
    2
    `sed -i 's/-test-SNAPSHOT//g' pom.xml`
    Euthpic
    Euthpic
    OP
    May 26, 2021
    3
    @gstqc 可惜 test 是无法确定的分支名.
    fannas
    fannas
    May 27, 2021 via iPhone
    4
    我猜你打算 cicd 做 release 。可以用 agent 注入版本号哈
    oott123
    oott123
    May 27, 2021 via Android
    5
    你把 <b-api> 也加进去不就完了。。
    Kanavi
    Kanavi
    May 27, 2021
    6
    这个有插件的,尽量别自己写正则。
    idea 搜索 maven version 插件 或者是在 maven plugins 引入 versions-maven-plugin
    he1a2s0
    he1a2s0
    May 28, 2021
    7
    branch 里面没有-的话,可以简单的把 (.*?) 换成 [^-]\+
    acr0ss
    acr0ss
    May 31, 2021
    8
    若 version 由 \w (字母数字下划线) 构成,则可如此匹配:

    (-\w+)?-SNAPSHOT
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1654 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 04:33 · PVG 12:33 · LAX 20:33 · JFK 23:33
    ♥ Do have faith in what you're doing.