...
- Identifying dependency exclusions.
Is it excluded, and where did exclusion originate. - Identifying dependency version decisions.
If maven picks another version, which one, and why? - Identifying dependency owner.
If dependency is present in project, how did it get there?
By current project, by transitive dependency, or by parent pom concepts? - Identifying transitive dependency complexity.
Multi module project is getting out of hand, what dependencies can i collapse safely into one dep? - Identify relocated dependencies.
If a dependency was relocated, identify it. - Identify missing or bad dependencies.
If dependency is not found, flag it.
How should we show the graph?We should allow the user to specify how the graph should be shown.
- With nodes representing a unique groupId:artifactId and the edges representing the scope/version ?
- With nodes representing a fully unique groupId:artifactId:version and the edges representing the scope?
...
- Just the active dependencies?
- The excluded dependencies, but flagged to indicate that they are excluded.
- Optional dependencies.
- All scopes? (indicate scope somehow. by color?)
Other Resources
...
- Plugins too.
- Build Extensions.
- Reports.
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/
- http://people.apache.org/~carlos/grafo/graphview.html
- http://people.apache.org/~carlos/grafo/radialgraphview.html
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.
- http://svn.codehaus.org/plexus/plexus-sandbox/trunk/plexus-components/plexus-graph/
- http://svn.codehaus.org/plexus/plexus-sandbox/trunk/plexus-components/plexus-graph-visualization/
Other Resources
From Joakim:
- http://www.graphviz.org/ - Graphviz support exists in the plexus-graph-visualization
- plexus-graph-visualization - has providers for prefuse, graphviz, and touchgraph.
- Grouping / Clustering support is important for large projects.
- Transitive Reduction views of large complex trees are important to get rid of the noise.
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:
- http://www.workingfrog.org/ a 3D view of java projects and dependencies
- http://prefuse.sourceforge.net/ the gallery shows amazing examples with interactive graphs in applets (BSD license)
...
Currently an interactive dependency viewer experiment.
Example of current functionality.
...
...