Ale*_*son 3 xml bash grep sed maven
我有一个pom文件,其中包含以下信息:
<modelVersion>4.0.0</modelVersion>
<groupId>com.site.camera</groupId>
<artifactId>proj3</artifactId>
<packaging>pom</packaging>
<version>2.6</version>
<name>Proj 3</name>
Run Code Online (Sandbox Code Playgroud)
我正在编写一个bash脚本,并希望能够打开这个文件(pom.xml)并删除版本(例如在这种情况下为2.6).我这样做是因为当我更新版本时,我希望我的脚本的其余部分用它来更新.
我尝试过的事情:
var=$(grep <version>2.6</version> pom.xml)
echo $var
Run Code Online (Sandbox Code Playgroud)
请注意,我在pom文件中有多个版本参数.我需要这个特定的版本,包含这个名称,包装,artifactId等.
有些人反对使用正则表达式解析XML.以下是您如何正确而有力地执行以下操作xmlstarlet:
$ cat pom.xml
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.site.camera</groupId>
<artifactId>proj3</artifactId>
<packaging>pom</packaging>
<version>2.6</version>
<name>Proj 3</name>
</project>
$ xmlstarlet sel -t -v '/project/version' pom.xml
2.6
Run Code Online (Sandbox Code Playgroud)
在XML工具和编辑器使用您的文档后,这同样适用:
$ cat pom.xml
<project>
<version><![CDATA[2]]>.6
</version>
</project>
$ xmlstarlet sel -t -v '/project/version' pom.xml
2.6
Run Code Online (Sandbox Code Playgroud)
编辑:作为"正确行动"(tm)的证明,在指出将有许多不同版本标签后,此解决方案仍然可以正常工作.
使用maven你这样做:
echo '${project.version}' | mvn help:evaluate | grep -v '^[[]'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4897 次 |
| 最近记录: |