Hello all.

I have met a situation which confuse me a little.

Let's imagine we have two assembly for one maven module: full version (for example server part of application) and brief version (client part for remote call). Will use maven-assembly-plugin for build them.

Full (server):
       <dependency>
           <groupId>org.foo</groupId>
           <artifactId>foo</artifactId>
           <version>1.0</version>
       </dependency>


Short (client):
       <dependency>
           <groupId>org.foo</groupId>
           <artifactId>foo</artifactId>
           <version>1.0</version>
           <classifier>client</classifier>
       </dependency>

Both artifacts have the same pom.xml which is owned by full version.
If I attach dependency on client jar I will have all dependencies of full version of artifact in spite of client artifact have less count of dependencies. Result of this is unnecessary libraries in application which use client jar.

Real example:

In my app I use jboss 5.0.0-GA. I have client app which have access to JBoss JMX and I use the next dependency, which is one of assembly of main jboss artifact /jboss-as-server/ :

       <dependency>
           <groupId>org.jboss.jbossas</groupId>
           <artifactId>jboss-as-server</artifactId>
           <classifier>jmx-invoker-adaptor-client</classifier>
           <version>5.0.0.GA</version>
           <scope>compile</scope>
       </dependency>

When I attach this dependency to my project I have so much transactive dependencies from /jboss-as-server, /but most of them is not needed for client part. It's around 9 Mbytes of unnecessary dependencies which is used for jboss server work, not for my client application.

It's a real problem for me, but may be I don't understand something important about maven work with classified artifacts and it's dependencies...

Do you have any ideas?

Best regards, Aleksey Didik.






Reply via email to