1

pom.xml を調べて、さまざまな Maven プロジェクトの親バージョンを確認する次のスクリプトがあります。

#!/bin/bash
# Loop to find all pom.xml
for i in `find . ! -path "*/target/*" -type f -name pom.xml`
do
    # Filter the parent artifactId.
    grep -q 'IC_Maven_JEE_Parent\|IC_Maven_Parent' $i
    if [ "$?" -eq 0 ]; then
    # Print parent ID, version value, and then pom.xml path.
    echo $(grep -o 'IC_Maven_JEE_Parent\|IC_Maven_Paren' $i) $(echo -e 'setns x=http://maven.apache.org/POM/4.0.0\ncat /x:project/x:parent/x:version/text()' | xmllint --shell $i | grep -v /) $i
    fi
done

テスト フォルダーの出力は次のようになりますが、これは並べ替えられておらず、有益ではありません。

IC_Maven_JEE_Parent ------- 1.4.44 ./AGS-DEF-JOB1/pom.xml
IC_Maven_JEE_Parent ------- 1.4.44 ./AGS-SITE-JOB1/pom.xml
IC_Maven_Paren ------- 1.5.44 ./AGS-SITESSL-JOB1/pom.xml
IC_Maven_JEE_Parent ------- 6.2 ./AIRR-COMMODITIES-JOB1/pom.xml
IC_Maven_JEE_Parent ------- 6.2 ./AIRR-DEF14-JOB1/pom.xml
IC_Maven_Paren ------- 1.4.38 ./pom.xml

アップグレードの優先順位がわかるように、(最初に親 ID、次にバージョン値、最後にパスに従って) 出力を並べ替えたいと考えています。次のようになります。

IC_Maven_JEE_Parent ------- 1.4.44 ./AGS-DEF-JOB1/pom.xml
IC_Maven_JEE_Parent ------- 1.4.44 ./AGS-SITE-JOB1/pom.xml
IC_Maven_JEE_Parent ------- 6.2 ./AIRR-COMMODITIES-JOB1/pom.xml
IC_Maven_JEE_Parent ------- 6.2 ./AIRR-DEF14-JOB1/pom.xml
IC_Maven_Paren ------- 1.4.38 ./pom.xml
IC_Maven_Paren ------- 1.5.44 ./AGS-SITESSL-JOB1/pom.xml

私の投稿の更新 (6 月 8 日 14:13)。

私が達成した最も近いポイントは、次のスクリプトが示すように、出力をファイルに保存してからファイルをソートすることです。

#!/bin/bash
for i in `find . ! -path "*/target/*" -type f -name pom.xml`
do
    grep -q 'IC_Maven_JEE_Parent\|IC_Maven_Parent' $i
    if [ "$?" -eq 0 ]; then
    echo $(grep -o 'IC_Maven_JEE_Parent\|IC_Maven_Paren' $i) $(echo -e 'setns x=http://maven.apache.org/POM/4.0.0\ncat /x:project/x:parent/x:version/text()' | xmllint --shell $i | grep -v /) $i
    fi
done > check.txt
sort ./check.txt
4

1 に答える 1

1

sortループの最後に追加するだけで、出力を並べ替えることができます。

#!/bin/bash
for i in `find . ! -path "*/target/*" -type f -name pom.xml`
do
    grep -q 'IC_Maven_JEE_Parent\|IC_Maven_Parent' $i
    if [ "$?" -eq 0 ]; then
    echo $(grep -o 'IC_Maven_JEE_Parent\|IC_Maven_Paren' $i) $(echo -e 'setns x=http://maven.apache.org/POM/4.0.0\ncat /x:project/x:parent/x:version/text()' | xmllint --shell $i | grep -v /) $i
    fi
done | sort
于 2013-07-23T08:53:11.540 に答える