Hello,

I use Maven 2 for almost 2 years now. 
The Maven distribution version succeeds one another and I don’t understand
why you always  cannot choice to exclude transitive dependency for your
dependency framewok.

For example, if you want to package in your web application
“commons-logging” on version “1.1”, and you do not want the “log4j”,
“logkit”, “avalon-framework” and especially “javax.servlet” that it must not
include in your WEB-INF/lib directory for a web application.

So, you must write just for “commons-logging” :
<dependency>
   <groupId>commons-logging</groupId>
   <artifactId>commons-logging</artifactId>
   <version>1.1</version>
   <exclusions>
      <exclusion>
         <groupId>log4j</groupId>
         <artifactId>log4j</artifactId>
      </exclusion>
      <exclusion>
         <groupId>logkit</groupId>
         <artifactId>logkit</artifactId>
      </exclusion>
      <exclusion>
         <groupId>avalon-framework</groupId>
         <artifactId>avalon-framework</artifactId>
      </exclusion>
      <exclusion>
         <groupId>javax.servletjavax.servlet</groupId>
         <artifactId>servlet-api</artifactId>
      </exclusion>
   </exclusions>
</dependency>

In a project, if you depend of many framework, you will obtain a pom.xml
very spacious and not maintainable. Suddenly, they lose the interest of
Maven.

In this example, you can’t use the “provided” scope that not gets transitive
dependency because I want to inlude it in my package.
And I can’t use the following section because the “runtime” scope gets
transitive dependency (it is normal) :

<dependency>
   <groupId>commons-logging</groupId>
   <artifactId>commons-logging</artifactId>
   <version>1.1</version>
   <scope>provided</scope>
</dependency>
<dependency>
   <groupId>commons-logging</groupId>
   <artifactId>commons-logging</artifactId>
   <version>1.1</version>
   <scope>runtime</scope>
</dependency>


The problem is that the common-logging maven descriptor is very poor.
They should use for theirs dependency provided scope for “servlet-jar” that
is not transitive or the <optional> to true for the other dependency.

You can’t control the framework distribution, so it misses the control of
the transitive dependency in the leaf tree.

What do you think about?


Thanks
--
Gregory BOISSINOT
-- 
View this message in context: 
http://www.nabble.com/A-poor-dependency-management-tp16825387s177p16825387.html
Sent from the Maven - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to