我正在尝试完成以下任务:
- 在名为“pom.xml”的目录层次结构中查找所有文件。(不显示结果)
- 然后,我将使用“Maven_CAS_Parent”或“Maven_JAB_Parent”的父/artifactId 来识别那些“pom.xml”。(我需要 pom.xml 路径和父 artifactId)
- 过滤后,在范围内的“pom.xml”中,我尝试将父/版本值提取到一个名为“check.txt”的文本文件中。(这里我需要父版本)
其中一个“pom.xml”看起来像这样(简化版):
<properties>
<jiraKey>ORCAP</jiraKey>
<commonName>${jiraKey} - CASDOP</commonName>
<ear>CAS_ORCAP_EAR</ear>
<war>CAS_ORCAP_WAR</war>
<cas.version>1.4</cas.version>
<cas.dep.version>1.3</cas.dep.version>
</properties>
<parent>
<artifactId>Maven_CAS_Parent</artifactId>
<groupId>csju.maven</groupId>
<version>1.4.38</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>dgy.orcap</groupId>
<artifactId>IHSB_ORCAP</artifactId>
<version>1.0.2-SNAPSHOT</version>
<packaging>pom</packaging>
<name>${commonName}</name>
<description>none</description>
<url>${siteURL}${project.groupId}</url>
话虽如此,我想要按以下顺序输出:pom 文件的路径、父 artifcatId、父版本。例如:
NSS-BUILD3-JOB1/pom.xml Maven_CAS_Parent 1.4.38
我对此很陌生,但我得到了以下命令。我知道这个命令不起作用并且不会创建 check.txt 文件,但我该如何修复它或编写一个新文件?
#!/bin/bash
check()
{
echo -e 'setns x=http://maven.apache.org/POM/4.0.0\ncat /x:project/x:parent/x:version/text()' | xmllint --shell pom.xml | grep -v /
}
find . -type f -name pom.xml | xargs grep 'Maven_CAS_Parent\|Maven_JAB_Parent' | Check