cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Reinhard Poetz <reinh...@apache.org>
Subject [SlightlyOT] Maven dependency resolution
Date Mon, 26 Nov 2007 08:37:49 GMT
Ralph Goers wrote:
> Reinhard Poetz wrote:
>> Ralph Goers wrote:
>>> Is the cocoon build really trying to rely on transitive dependency 
>>> verions? Very bad idea. Versions of every dependency cocoon uses 
>>> directly or indirectly should be specified in the managedDependencies.
>>
>> The problem is that the groupId of the Avalon framework changed and 
>> that's the root of all evil in this case. We ever never need a 
>> dependency on Avalon 4.1.3 but how to express this in the 
>> managedDependencies section?
>>
>> The only chance for us is configuring "exclusions" but first you have 
>> to figure out that you have to do it at all (here the dependency 
>> module comes into play).
>>
>> I have also experienced very strange behaviour of the dependency 
>> resultion mechanism e.g. I exclude avalon-framework from being pulled 
>> in by commons-logging but then, when I use commons-beanutils, which 
>> pulls in commons-logging, the avalon-framework dependency is used again.
>>
>> TBH, I have no idea why the dependency resolution is still buggy after 
>> such a long time after the first final Maven 2 release :-/
>
> Can you point me at the poms I should look at to see this?

If you refer to the commons-beanutils/commons-logging problem, here is a 
stripped down variant of a custom project of ours that reproduced the problem:

PARENT:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd">

   <modelVersion>4.0.0</modelVersion>
   <packaging>pom</packaging>

   <groupId>com.example</groupId>
   <artifactId>test-parent</artifactId>
   <version>1-SNAPSHOT</version>

   <dependencyManagement>
     <dependencies>
       <dependency>
         <groupId>org.apache.cocoon</groupId>
         <artifactId>cocoon-core</artifactId>
         <version>2.2.0-RC2</version>
       </dependency>
       <dependency>
         <groupId>commons-beanutils</groupId>
         <artifactId>commons-beanutils</artifactId>
         <version>1.8.0-BETA</version>
       </dependency>
       <dependency>
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
          <version>1.1</version>
       </dependency>
     </dependencies>
   </dependencyManagement>

   <profiles>
     <profile>
       <id>use-snapshots</id>
       <build>
         <plugins>
           <plugin>
             <artifactId>maven-dependency-plugin</artifactId>
             <version>2.0-alpha-5-SNAPSHOT</version>
           </plugin>
         </plugins>
       </build>
       <repositories>
         <repository>
           <id>apache.org</id>
           <name>Maven Snapshots</name>
           <url>http://people.apache.org/repo/m2-snapshot-repository</url>
           <releases>
             <enabled>false</enabled>
           </releases>
           <snapshots>
             <enabled>true</enabled>
           </snapshots>
         </repository>
         <repository>
           <id>codehaus.org</id>
           <name>CodeHaus Snapshots</name>
           <url>http://snapshots.repository.codehaus.org</url>
           <releases>
             <enabled>false</enabled>
           </releases>
           <snapshots>
             <enabled>true</enabled>
           </snapshots>
         </repository>
       </repositories>
       <pluginRepositories>
         <pluginRepository>
           <id>apache.org</id>
           <name>Maven Plugin Snapshots</name>
           <url>http://people.apache.org/repo/m2-snapshot-repository</url>
           <releases>
             <enabled>false</enabled>
           </releases>
           <snapshots>
             <enabled>true</enabled>
           </snapshots>
         </pluginRepository>
         <pluginRepository>
           <id>codehaus.org</id>
           <name>Maven Plugin Snapshots (Codehaus)</name>
           <url>http://snapshots.repository.codehaus.org</url>
           <releases>
             <enabled>false</enabled>
           </releases>
           <snapshots>
             <enabled>true</enabled>
           </snapshots>
         </pluginRepository>
       </pluginRepositories>
     </profile>
   </profiles>
</project>

CHILD:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd">

   <modelVersion>4.0.0</modelVersion>
   <packaging>pom</packaging>

   <parent>
     <groupId>com.example</groupId>
     <artifactId>test-parent</artifactId>
     <version>1-SNAPSHOT</version>
   </parent>
   <artifactId>test-child</artifactId>
   <version>1.0.0-SNAPSHOT</version>

   <dependencies>
     <dependency>
       <groupId>org.apache.cocoon</groupId>
       <artifactId>cocoon-core</artifactId>
     </dependency>
     <dependency>
       <groupId>commons-beanutils</groupId>
       <artifactId>commons-beanutils</artifactId>
     </dependency>
   </dependencies>
   <profiles>
     <profile>
       <id>foo</id>
     </profile>
   </profiles>
</project>


Run "mvn dependency:list -P use-snapshots" and "mvn dependency:list -P 
use-snapshots,foo" for the child project and compare the results with regard to 
avalon-framework.


-- 
Reinhard Pötz                            Managing Director, {Indoqa} GmbH
                           http://www.indoqa.com/en/people/reinhard.poetz/

Member of the Apache Software Foundation
Apache Cocoon Committer, PMC member, PMC Chair        reinhard@apache.org
_________________________________________________________________________

Mime
View raw message