簡體   English   中英

如何在多模塊項目中(使用Shell腳本)從所有pom.xml文件中提取artifactId?

[英]How to extract the artifactId from all pom.xml files using in a multimodule project (using shell script)?

我需要從多模塊項目中的所有pom中提取artifactId。

項目結構與此類似,但是結構可以不同(取決於項目):

project
|------->pom.xml
|------->subproject1
            |------->pom.xml
            |------->folder1
                        |------->pom.xml                
|------->subproject2
            |------->pom.xml
            |------->folder2
                        |------->pom.xml                        
|------->subproject3
            |------->pom.xml
            |------->folder3
                        |------->pom.xml                        
|------->subproject4
            |------->pom.xml
            |------->folder4
                        |------->pom.xml
|------->subproject5
            |------->pom.xml
            |------->folder5
                        |------->pom.xml

我正在使用此命令來提取單個模塊項目中的信息:

MVN_ARTIFACTID=$(mvn -q \
-Dexec.executable="echo" \
-Dexec.args='${project.artifactId}' \
--non-recursive \
org.codehaus.mojo:exec-maven-plugin:1.3.1:exec)

然后,我將此變量用於Bamboo計划中的其他操作。

如何使用多模塊項目執行類似的任務? 我需要提取變量中所有pom的artifactId。

我知道這篇文章,但問題不一樣: 如何在Shell腳本中從pom.xml文件中提取GAV

謝謝。

只需刪除非遞歸選項:

MVN_ARTIFACTID=$(mvn -q -Dexec.executable="echo" -Dexec.args='${project.artifactId} ##' org.codehaus.mojo:exec-maven-plugin:1.3.1:exec)
echo $MVN_ARTIFACTID| sed 's/##/\n/g'

添加##作為一個小技巧,以便第二行可以更易讀的格式給出artifactId名稱。 否則,所有模塊將在同一行中回顯。

Module-1
Module-2
Module-3

應該這樣做(改編自問題中引用的答案):

 grep -v '\[' <( find . -type f -name 'pom.xml' -exec mvn -f{} help:evaluate -Dexpression="project.artifactId" \; ) 

請注意,其他答案在Maven 3.5.4中對我不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM