2

cygwin を使用して次のタスクを達成しようとしています。

「IC_Maven_AB_Parent」と「IC_Maven_DE_Parent」の ID を持つ親と依存関係のバージョンを抽出します。

(これは私のタスクのコア部分であり、何千もの pom.xml ファイルに再帰的に適用します)

入力:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>
<groupId>as.ic.ecommerce</groupId>
<artifactId>ASB_Ecommerce</artifactId>
<packaging>pom</packaging>
<version>1.5.8-SNAPSHOT</version>
<parent>
    <groupId>as.ic.maven</groupId>
    <artifactId>IC_Maven_AB_Parent</artifactId>
    <version>7.2</version>
</parent>
<dependencyManagement>
    <dependency>
        <groupId>as.ic.maven</groupId>
        <artifactId>IC_Maven_External_Dependencies</artifactId>
        <version>${ic.external.dep.version}</version>
    </dependency>
    <dependency>
        <groupId>as.ic.maven</groupId>
        <artifactId>IC_Maven_DE_Parent</artifactId>
        <version>6.2</version>
    </dependency>
</dependencyManagement>
</project>

私が使用するスクリプト:

#!/bin/bash
grep -q 'IC_Maven_AB_Parent\|IC_Maven_DE_Parent' pom.xml
if [ "$?" -eq 0 ]; then
xmlstarlet sel -N x=http://maven.apache.org/POM/4.0.0 -t -v /x:project/x:parent/x:artifactId -o "......" -v /x:project/x:parent/x:version pom.xml
fi

「IC_Maven_DE_Parent」の依存関係を含まない出力:

IC_Maven_AB_Parent......7.2

そして、これが私が出力として期待するものです:

IC_Maven_AB_Parent......7.2
IC_Maven_DE_Parent......6.2

したがって、重要な課題は、2番目の依存関係を特定するのに問題があることです。コメントはありますか?

4

1 に答える 1

4

xmlstarlet次の式を試してください。2 つのxpath式を実行して各要素に到達<artifactId>し、そのテキストを次の兄弟のテキストと連結します。

xmlstarlet sel \
    -N x=http://maven.apache.org/POM/4.0.0 -t \
    -m '/x:project/x:parent/x:artifactId[text() = "IC_Maven_AB_Parent"]' \
      -v 'concat(text(), "......", ./following-sibling::x:version)' \
      -n \
    -m '/x:project/x:dependencyManagement/x:dependency/x:artifactId[text() = "IC_Maven_DE_Parent"]' \
      -v 'concat(text(), "......", ./following-sibling::x:version)' \
      -n \
xmlfile

次の結果が得られます。

IC_Maven_AB_Parent......7.2
IC_Maven_DE_Parent......6.2
于 2013-07-10T20:30:34.417 に答える