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

3

11

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.

Footpath answered 19/4, 2012 at 12:0 Comment(0)
B
7

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

Brann answered 18/6, 2015 at 3:58 Comment(4)
This plugin is awesome! You're the best.Snailfish
@javajavajava I am glad it helped:)Brann
@Brann great work! This is exactly what I wanted. Sorry for my (very) late reply.Footpath
Thank you for the plugin @HRgiger. However, I would be wary with using plugin as it has two major vulnerabilities. mvnrepository.com/artifact/org.qunix/structure-maven-plugin/… Could you address them in 0.0.2? However, it seems 0.0.1 has no vulnerabilities.Jurdi
S
0

I haven't encounter such plugin so far nor even heard about one. Google doesn't know about it too, so it's likely you have to write own plugin or try to parse mvn dependency:tree or just reactor build order, probably using heavily console output streaming and so.

Surfacetosurface answered 19/4, 2012 at 12:24 Comment(0)
S
0

I think that mvn dependency:tree is way to go.

You should try this :

mvn dependency:tree -DoutputFile=target/dependencies.txt
cat target/dependencies.txt | awk -F ':' '{print $1":"$2}'

That way, you will have a nice dependency tree with indentation but without scope, version and type :)

Selfseeker answered 20/6, 2012 at 11:41 Comment(1)
Thanks. But I meant it in the opposite direction. Yes, you can print the dependencies of a sub component by means of tree. However, can you also collect all dependencies required by the root project (that is constituted of sub components)?Footpath

© 2022 - 2024 — McMap. All rights reserved.