Last week I discovered the netbeans graph library. It seems quite flexible so far. For mevenide2 I managed to create a nice transitive dependencies graph.
Things I had to do:
I have changed the node renderer to visually distinguish different scopes (compile/test/runtime/..).
I've overriden the link renderer to draw thick lines from the project's artifact. That way it should be more obvious what are the direct dependencies.
When a node is selected by user, it's dependencies are also selected. Again a nice visual indication of interdependencies, plus helps when moving nodes around.
I've implemented my own graph node layouter, because the default didn't scale for big numbers of dependencies and was a bit chaotic for projects with interdependent dependencies. The current one attempts to cluster the related dependencies together. As can be seen in the picture, the netbeans deps are separated from the maven dependencies visually.
Implementing layout persistece is supported by the graph library, so when you relayout the graph, it's not lost the next time you open it..
All and together, quite good results for the few hours I spent on the feature. The hardest part was coming up with the layouting algorithm.
