Maven dependency graph

JavaMaven

Java Problem Overview


Is there a way to have a Maven dependency graph of a given set of projects (if possible, graphical), without having 3rd party dependencies drawn too? Or where I opt out the dependencies I'm not interested in?

I'd like to point the tool/plugin at a number of POM files and see a description of the dependencies between those projects.

Java Solutions


Solution 1 - Java

If you use mvn dependency:tree, you can specify files to exclude or include with -Dexcludes and -Dincludes. The output is an ASCII-art style depiction of the dependencies.

See the docs for more info.

Solution 2 - Java

there exists exactly what you need, it is called Pom Explorer.

You can find the website here : github.com/ltearno/pom-explorer

It is a tool to work on a graph of maven projects. As a teaser i can say that on my machine it analyzes 4000 pom.xml files in 4 seconds. Then many functionnalities are provided above the analysed pom graph :

  • dependency analysis (who depends on GAV, which gavs this GAV depends on, with transitivity),
  • resolution (pom explorer knows where are defined properties, it manages dependencies and bom imports),
  • manipulation (you can use it to transform you pom graph, let's say if you want many projects to use a new version of a dependency),
  • build (pom explorer analyses your pom graph and knows in which order they should be built, then it builds everything ! it can even watch your projects directories for change),
  • exporting (today there is CSV and a GRAPHML exports),
  • visualization (pom explorer can show you an interactive 3D customizable visualization of your projects graph).

It is in active development right now so don't hesitate to try it, report bugs and ask for useful features ! The documentation is also not complete yet, so again don't hesitate to ask !

Thanks

Solution 3 - Java

mvn com.github.ferstl:depgraph-maven-plugin:aggregate -Dincludes=com.yourcompany.pkg

Does well for me.

Solution 4 - Java

I like depgraph-maven-plugin to visualize dependencies in a multi-module project, see also previous answer.

To get an aggregated result in text format (like dependency:tree) for your modules, use:

mvn com.github.ferstl:depgraph-maven-plugin:aggregate -DgraphFormat=text -Dincludes=myGroupId

The syntax for includes is the same as with maven-dependency-plugin includes.

It has a lot of properties to customize the result/behavior. I prefer to use it together with graphviz, so I can use the (default) graph format dot and let it create a png file in the target folder:

mvn com.github.ferstl:depgraph-maven-plugin:aggregate -DcreateImage -Dincludes=myGroupId

There are also other interesting goals, e.g. an example goal to quickly play around with the properties.

Solution 5 - Java

You can use POM2RDF to generate an RDF graph of your project dependencies (and their dependencies, and so on) that you can then query to get a Software Bill of Materials or visualize as a dependency graph.

Disclaimer: I'm the author.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSimhorView Question on Stackoverflow
Solution 1 - JavaDuncan JonesView Answer on Stackoverflow
Solution 2 - JavaArnaud TournierView Answer on Stackoverflow
Solution 3 - Javapaul_hView Answer on Stackoverflow
Solution 4 - JavamsaView Answer on Stackoverflow
Solution 5 - JavaMartynas JusevičiusView Answer on Stackoverflow