2
我试图完成以下任务中提取特定值:脚本:如何针对特定的pom.xml文件,并在标签
- 查找名为“pom.xml中”的目录层次结构中的所有文件。 (不显示结果)
- 然后,我将识别父母/ artifactId为“Maven_CAS_Parent”或“Maven_JAB_Parent”的那些“pom.xml”。 (我需要pom.xml路径和父项artifactId)
- 过滤后,在范围内的“pom.xml”中,我尝试将父/版本值提取到名为“check.txt”的文本文件中。 (在这里我需要父版本)
其中的“pom.xml的” S看起来像这样(简体版):
<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
将grep和'if ... fi'块移到一个单独的脚本中,然后调用它'find ... | xargs/path/to/myMavenFinder.sh'。祝你好运。 – shellter
我明白你在说什么,我会试试看,谢谢。但我正在尝试编写一个完成所有这些脚本的脚本。 –
顺便提一句,+1优秀的第一篇文章,包括示例输入,需要输出和喘气,试图解决您的问题。继续发帖,祝你好运! – shellter