Search code examples
shellmavenbamboo

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


I need to extract the artifactId from all the poms in a multimodule project.

The project structure is similar to this but the structure can be different (It's depends of the project):

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

I'm using this command for extract the info in single module projects:

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

Then I use this variable for other actions in a Bamboo Plan.

How I can do similar tasks with multimodule projects? I need to extract the artifactId of all poms in variables.

I know about this post but It's not the same problem: How to extract the GAV from a pom.xml file in a shell script

Thanks.


Solution

  • Just remove non recursive option :

    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'
    

    Added ## as a small hack so that second line can give artifactId names in more readable format. Else all modules will be echoed in same line.

    Module-1
    Module-2
    Module-3