我有一个项目,实际上是2个maven项目。在“child”maven项目中,我有一个引用父项目中的版本的属性:
<myparent.project.version>15.0.0-SNAPSHOT</myparent.project.version>
我正在尝试做的是将一些常用命令bash脚本放在一起,即在创建发布分支时,我想创建一个父maven项目,然后更新子maven父项目,但我不知道如何更新这个值:
我希望得到一些工作方面的东西: 其中newVersion = 16.0.0
$ sed -i "s/\<myparent.project.version\>[0-9.]+-SNAPSHOT\<\/myparent.project.version\>/<myparent.project.version>$newVersion-SNAPSHOT<\/myparent.project.version>/g" pom.xml
我已经使用https://regex101.com/检查了正则表达式(\<myparent.project.version\>[0-9.]+-SNAPSHOT\<\/myparent.project.version\>
)并且它与我要在pom.xml文件中替换的行匹配,但由于某种原因,我无法将sed与工作正常。
有什么想法吗?
答案 0 :(得分:1)
您应该使用像XMLStarlet这样的xml解析器。也就是说,对于那个简单的替换,你可以试试这个GNU sed:
sed "s/<myparent\.project\.version>[0-9.]\+-SNAPSHOT<\/myparent\.project\.version>/<myparent.project.version>$newVersion-SNAPSHOT<\/myparent.project.version>/g" file
您必须转义一个或多个量词:\+
和点:\.
,但不能转义<
和>
(\<
和{{1}用于GNU sed的单词边界