In Netbeans, right click in the project -> Show Dependency Graph
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Esteban Aliverti
- Developer @ http://www.plugtree.com
- Blog @ http://ilesteban.wordpress.com
It's also enabled in your favorite IDE:
Eclipse: I've your using the m2eclipse plugin, can you also use the dependency hierarchy overview:
http://screencast.com/t/8i7TJKVlwUz
IntelliJ: open sidebar "Maven Projects", right click the module and select menu item "Show dependencies".
Op 12-05-11 05:54, Mark Proctor schreef:On 11/05/2011 15:22, Michael Anstis wrote:> Incident 3: Wierd that drools-compiler would need jetty to test something?yes to both.
If I am not mistaken jetty is used for some of the KnowledgeAgent tests.
> Incident 4: Wierd that drools-compiler would need a swing framework to test something?
I know Mark did some work integrating glazed-lists with live queries, or something around that area a while ago...
Mark
On 11 May 2011 14:37, Geoffrey De Smet <ge0ffrey.spam@gmail.com> wrote:
[INFO] BUILD SUCCESS & nbsp; &nbs p;Hi guys,
We should actively notify/teach each other about tips and tricks.
There's a lot we can learn from each other.
I'll start with a build tip:
The problem
========
- How bloated is the dependency tree of my module? This affects the download zip size, but also the minimal jars needed to run.
- Are there dead dependency left in my module?
The solution
========
- First thing to understand is that it has to reviewed module by module
(focus on end-user modules such as drools-compiler, drools-camel-server, guvnor-webapp, ...).
- Use the command mvn dependency:tree
Example
=====
Here's the output on drools-compiler.
I've annotated a couple of possible incidents which might or might not be a problem.
It's hard to tell without someone with extensive drools-compiler experience looking further into it.
drools-compiler [master] $ mvn dependency:tree
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Drools :: Compiler 5.3.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.2:tree (default-cli) @ drools-compiler ---
[INFO] org.drools:drools-compiler:jar:5.3.0-SNAPSHOT
[INFO] +- org.drools:drools-core:jar:5.3.0-SNAPSHOT:compile
[INFO] | \- org.drools:knowledge-api:jar:5.3.0-SNAPSHOT:compile
[INFO] +- org.drools:drools-core:test-jar:tests:5.3.0-SNAPSHOT:test
[INFO] +- org.apache.felix:org.osgi.core:jar:1.4.0:provided
[INFO] +- org.apache.felix:org.osgi.compendium:jar:1.4.0:provided
[INFO] +- org.antlr:antlr-runtime:jar:3.3:compile
[INFO] +- org.antlr:antlr:jar:3.3:compile
Incident 1: maybe org.antlr:antlr-runtime:jar:3.3 is a subset of org.antlr:antlr-runtime:jar:3.3 ? (antlr is wierd IIRC - so this is probably not in this case)
[INFO] +- org.antlr:stringtemplate:jar:3.2.1:compile
[INFO] +- antlr:antlr:jar:2.7.7:compile
Incident 2: maybe antlr:antlr:jar:2.7.7 is a subset of org.antlr:antlr-runtime:jar:3.3 ? (antlr is wierd IIRC - so this is probably not in this case)
In general, dependencies with a non-namespaced groupId need to be upgraded if possible.
[INFO] +- org.antlr:gunit:jar:3.3:test
[INFO] +- org.eclipse.jdt.core.compiler:ecj:jar:3.5.1:compile
[INFO] +- janino:janino:jar:2.5.15:compile
Note that janino is optional (output doesn't show that :( ) - no problem here
[INFO] +- org.mvel:mvel2:jar:2.1-SNAPSHOT:compile
[INFO] +- com.thoughtworks.xstream:xstream:jar:1.3.1:test
[INFO] | \- xpp3:xpp3_min:jar:1.1.4c:test
[INFO] +- org.mortbay.jetty:jetty-embedded:jar:6.1.15:test
Incident 3: Wierd that drools-compiler would need jetty to test something?
[INFO] | +- org.mortbay.jetty:jetty:jar:6.1.15:test
[INFO] | | +- org.mortbay.jetty:jetty-util:jar:6.1.15:test
[INFO] | | \- org.mortbay.jetty:servlet-api:jar:2.5-20081211:test
[INFO] | \- javax.servlet.jsp:jsp-api:jar:2.1:test
[INFO] +- org.opensymphony.quartz:quartz:jar:1.6.1:test
[INFO] +- com.sun.xml.bind:jaxb-xjc:jar:2.2.1.1:provided
[INFO] +- com.sun.xml.bind:jaxb-impl:jar:2.2.1.1:provided
[INFO] +- javax.xml.bind:jaxb-api:jar:2.2.1:provided
[INFO] +- javax.xml.stream:stax-api:jar:1.0-2:provided
[INFO] +- javax.activation:activation:jar:1.1:provided
[INFO] +- net.java.dev.glazedlists:glazedlists_java15:jar:1.8.0:test
Incident 4: Wierd that drools-compiler would need a swing framework to test something?
[INFO] +- junit:junit:jar:4.8.1:test
[INFO] \- org.mockito:mockito-all:jar:1.8.2:test
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------ &n bsp; ;
[INFO] Total time: 1.951s &n bsp; ;
[INFO] Finished at: Wed May 11 15:09:09 CEST 2011 &nbs p; & nbsp;[INFO] Final Memory: 10M/309M &nb sp;
[INFO] ------------------------------------------------------------------------
Here's another example showing another type of incident:
drools-camel-server [master] $ mvn dependency:tree
...
[INFO] +- org.drools:drools-grid-impl:jar:5.3.0-SNAPSHOT:compile
[INFO] | +- org.apache.mina:mina-core:jar:2.0.1:compile (version managed from 2.0.0-M6)
[INFO] | \- com.hazelcast:hazelcast:jar:1.8.5:compile
...
[INFO] +- org.apache.camel:camel-cxf:jar:2.4.0:compile
[INFO] | \- org.apache.cxf:cxf-rt-frontend-jaxrs:jar:2.2.9:compile
[INFO] | +- org.apache.cxf:cxf-common-utilities:jar:2.2.9:compile
[INFO] | +- org.apache.cxf:cxf-rt-transports-http:jar:2.2.9:compile
[INFO] | +- org.apache.cxf:cxf-rt-databinding-aegis:jar:2.2.9:compile
[INFO] | +- jaxen:jaxen:jar:1.1.1:compile
[INFO] | \- org.apache.xmlbeans:xmlbeans:jar:2.4.0:compile
...
[INFO] +- org.apache.cxf:cxf-bundle-jaxrs:jar:2.2.9:compile
Incident A: This cxf-bundle-jaxrs is an uber jar. Uber jars (as dependencies) are evil.
An uber jar extracts the classes from other jars and zips them (=aggregate) in itself.
This effectively kills maven's ability to only have 1 class of something in your classpath.
It turns your classpath into box of chocolates: you never know what version of class file you'll get.
Also, it bloats the classpath with things you don't need (like jetty in this case)
and those cause havoc if you deploy it to some app servers.
[INFO] | +- aopalliance:aopalliance:jar:1.0:compile
[INFO] | +- org.apache.geronimo.specs:geronimo-annotation_1.0_spec:jar:1.1.1:compile
[INFO] | +- org.apache.geronimo.specs:geronimo-stax-api_1.0_spec:jar:1.0.1:compile
[INFO] | +- wsdl4j:wsdl4j:jar:1.6.2:compile
[INFO] | +- org.apache.ws.commons.schema:XmlSchema:jar:1.4.5:compile
[INFO] | +- commons-lang:commons-lang:jar:2.4:compile
[INFO] | +- org.apache.geronimo.specs:geronimo-activation_1.1_spec:jar:1.0.2:compile
[INFO] | +- org.codehaus.woodstox:wstx-asl:jar:3.2.9:compile
[INFO] | +- org.apache.neethi:neethi:jar:2.0.4:compile
[INFO] | +- org.apache.geronimo.specs:geronimo-javamail_1.4_spec:jar:1.6:compile
[INFO] | +- org.springframework:spring-web:jar:2.5.6:compile
[INFO] | +- org.mortbay.jetty:jetty:jar:6.1.21:compile
[INFO] | +- org.mortbay.jetty:jetty-util:jar:6.1.21:compile
[INFO] | +- javax.ws.rs:jsr311-api:jar:1.0:compile
[INFO] | +- org.apache.abdera:abdera-core:jar:1.0:compile
[INFO] | +- org.apache.abdera:abdera-i18n:jar:1.0:compile
[INFO] | +- commons-codec:commons-codec:jar:1.3:compile
[INFO] | +- org.apache.abdera:abdera-parser:jar:1.0:compile
[INFO] | +- org.apache.ws.commons.axiom:axiom-impl:jar:1.2.7:compile
[INFO] | +- org.apache.ws.commons.axiom:axiom-api:jar:1.2.7:compile
[INFO] | +- org.apache.abdera:abdera-extensions-json:jar:1.0:compile
[INFO] | \- org.apache.abdera:abdera-extensions-main:jar:1.0:compile
...
Also, if you're trying to solve such things on master, try upgrading the dependencies first (not on a release branch - upgrading is risky!):
many issues in the poms tend to be identified and fixed in newer versions.
-- With kind regards, Geoffrey De Smet
_______________________________________________
rules-dev mailing list
rules-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev
_______________________________________________ rules-dev mailing list rules-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-dev
_______________________________________________ rules-dev mailing list rules-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-dev
-- With kind regards, Geoffrey De Smet
_______________________________________________
rules-dev mailing list
rules-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev