activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael O'Cleirigh (JIRA)" <>
Subject [jira] [Created] (AMQ-5009) Switch activemq-all from shaded jar to pom dependency aggregator
Date Thu, 30 Jan 2014 21:38:20 GMT
Michael O'Cleirigh created AMQ-5009:

             Summary: Switch activemq-all from shaded jar to pom dependency aggregator
                 Key: AMQ-5009
             Project: ActiveMQ
          Issue Type: Improvement
    Affects Versions: 5.9.0
            Reporter: Michael O'Cleirigh
             Fix For: 5.10.0

I encountered an issue when adding a dependency on activemq-all into my project; it caused
a collision with our existing dependency on *slf4j-log4j12*

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/root/.m2/repository/org/slf4j/slf4j-log4j12/1.6.2/slf4j-log4j12-1.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/root/.m2/repository/org/apache/activemq/activemq-all/5.9.0/activemq-all-5.9.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See for an explanation.

The main issue is that because the activemq-all jar is shaded there is no way for us to use
maven dependency *exclusions* command to not take the activemq-all contributed *slf4j-log4j12*

There is a straight forward fix to this issue.  

Switch from using the *maven-shade-plugin* to using a pom dependency which aggregates the
activemq dependencies in a maven controllable way. 

By making the packaging of the *activemq-all* artifact pom it means that when it is included
in a project only the transitive dependencies that it declares are included, the pom artifact
itself is not.

I've tested that this works in our project that depends on activemq-all 5.9.0 and also have
a patch prepared against the current 5.10-SNAPSHOT trunk.

The only difference to the consumer of the activemq-all artifact is that they have to specify
the *<type>* as pom.

For example:


The Apache Wicket project uses the same approach, see [here|]

This message was sent by Atlassian JIRA

View raw message