On 11/05/2011 15:22, Michael Anstis wrote:
> Incident 3: Wierd that drools-compiler would need jetty to test something?

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...
yes to both.

Mark

On 11 May 2011 14:37, Geoffrey De Smet <ge0ffrey.spam@gmail.com> wrote:
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] BUILD SUCCESS                                                                                                                                                                 &nbs p;                                                      
[INFO] ------------------------------------------------------------------------                                                                                                                                                        ;      
[INFO] Total time: 1.951s                                                                                                                                                                   ;                                                 
[INFO] Finished at: Wed May 11 15:09:09 CEST 2011                                                                                                                                                                  & 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