Dependency Graphing

We have a listener on the artifact resolver that can be used to track how the dependencies are resolved, which versions are used, and which are eliminated. Currently, only a simple textual representation is available at runtime. We want to be able to do some reporting based on this.

There will be several usage patterns for the resulting graphs.

We should allow the user to specify how the graph should be shown.

What should be included?

Current work

Eclipse plugins

Teh Eclipse plugin Q4E includes dependency graph and dependency analysis views.

Google SoC 2007

Piotr Tabor and Peter Kolbus will create this summer (as a Google Summer of Code participants - with Jason van Zyl and Carlos Sanchez as mentors respectively) a software system that will allow, during the build process of a project, to automatically generate diagrams of chosen aspects of the project.
http://docs.codehaus.org/display/MAVENUSER/Maven+Diagram+Maker

Grafo

Carlos has put together a initial version done with http://prefuse.sourceforge.net/

It's under the maven sandbox at https://svn.apache.org/repos/asf/maven/sandbox/grafo

plexus-graph-visualization

Jason van Zyl is planning on overhauling the entire gathering and resolution of artifacts using the plexus-graph library.  A visualization suite has already been created for it.

Other Resources

From Joakim: 

Graphviz ( ) is an excellent package for creating graphs and graph images, but it is a native application. If this route is chosen, how do we handle graphviz? As a dependency, or as a configuration parameter to the pre-installed binary?

From Carlos:

From Jason:

From Wim:

They show how to convert an xml tree structure to a SVG image.

From Milos Kleint:

  1. One shows the multiproject module structure. Details here. Currently just shows the included modules, but showing the non included ones and allowing interaction can be added in the future.
  2. The second one shows the dependencies of a single project. Details and screenshot Scopes are differenciated by color, links from main artifact are highlighted, haven't included version checking so far.

From Joakim:
Ambitusgraph: https://svn.sventech.com/repos/joakim/projects/trunk/ambitusgraph/

Currently an interactive dependency viewer experiment.
Example of current functionality.