Search code examples
mavenprintingstructurepretty-printmulti-module

Is there a way to print the structure of a multi-module maven project?


I'm facing a rather large multi module maven project. I would like to see how the root (parent) project is composed out of subprojects/ child projects in the form of groupId:artifactId (possible with some identation to reflect the hierarchy.

Of course I can write my own plugin to get this printout, but I reckon that there must be something available of the shelf.


Solution

  • Hello late answer but I have added a plugin into maven repository:

    <dependency>
        <groupId>org.qunix</groupId>
        <artifactId>structure-maven-plugin</artifactId>
        <version>0.0.1</version>
    </dependency>
    

    To run the plugin you will need to add into your pom as below:

    <build>
            <plugins>
    
                <plugin>
                    <groupId>org.qunix</groupId>
                    <artifactId>structure-maven-plugin</artifactId>
                    <version>0.0.1</version>
                    <inherited>false</inherited>
                    <executions>
                        <execution>
                            <phase>compile</phase>
                            <goals>
                                <goal>
                                    printModules
                                </goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
    
        </build>
    

    then output will look like:

       [INFO] --- structure-maven-plugin:0.0.1:printModules (default) @ test ---
    [INFO] 
    
    Project structure (all modules):
    
    
    
                    test
                    |
                    |__ a
                    |
                    |__ b
                    |
                    |
                    \__ c
                        |
                        |__ d
                        |
                        |__ e
                        |
                        |__ f
    

    If you want to print all files insted of modules use the goal: printAll or if you want just folders use the goal:printFolders. <inherited> means dont execute plugin also in modules and <ignore> mean skip this files using regex pattern.

    EDIT: there is never version you can pull from github: https://github.com/buraksarac/MavenStructurePlugin