Posted by kohsuke
on January 7, 2008 at 10:41 AM PST
Here's the picture showing all the module dependencies inside GlassFish v3 so far.
GlassFish v3 builds are heavily dependent on Maven2, so as a result we are spending a lot of efforts into extending Maven to do things we need it to do. One of them is to build a final distribution image, in such a way that all the modules in v3 is placed into the proper place automatically, based on information in POM.
So last Friday I extended that code a little so that it can generate a complete dependency graph of modules and its dependency jars. Click the picture below to get the full size module dependency graph (and beware that it's quite large already!)
Dotted line indicates optional dependency. If the dependency scope is something other than "compile", the edge has a label indicating what the scope is. Nodes and edges in reds represent dependencies inside the so-called web tier.
Initially I was bit skeptical whether this is of any practical use, so I waited until Friday to work on this (in that way, at least I can claim it was a Friday project.) But it turns out that the graph is revealing. For example, you can already see that there are too many dependency edges that are redundant. For example, gf-web-connector (top-most red node) has a dependency to hk2 and glassfish-api, but both are also transitvely included in the dependencies anyway, through kernel. This kind of issues is probably an indication that people are confused as to the existing module layering structure.