[ 
https://issues.apache.org/jira/browse/IVY-974?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12676787#action_12676787
 ] 

Maarten Coene commented on IVY-974:
-----------------------------------

John, thanks a lot for the patch!

Could you or someone else try out how maven behaves when the child POM also 
specifies such an <exclusion> element?
I think we should try to have the same behaviour as maven when we commit this 
patch.

Once we know we behave the same as maven and have a junit test for this, we can 
commit it (and maybe include it in the upcoming 2.0.1 release if we are quick)

> Dependencies don't inherit exclusions from dependencyManagement
> ---------------------------------------------------------------
>
>                 Key: IVY-974
>                 URL: https://issues.apache.org/jira/browse/IVY-974
>             Project: Ivy
>          Issue Type: Bug
>          Components: Maven Compatibility
>    Affects Versions: 2.0-RC2
>            Reporter: Martin von Gagern
>         Attachments: parent_dependency_mgt_excludes.patch, 
> parent_dependency_mgt_excludes_2.patch
>
>
> In Maven 2, exclusions for a dependency can be given in the 
> dependencyManagement element of an ancestor pom. These exclusions aren't 
> correctly reproduced by Ivy.
> I have several projects here managed by Maven 2, and inheriting from a common 
> ancestor. The pom of this ancestor includes the following fragment:
>  <dependencyManagement>
>   <dependencies>
>    <dependency>
>     
> <groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.15</version>
>     <exclusions>
>      
> <exclusion><groupId>javax.mail</groupId><artifactId>mail</artifactId></exclusion>
>      
> <exclusion><groupId>javax.jms</groupId><artifactId>jms</artifactId></exclusion>
>      
> <exclusion><groupId>com.sun.jdmk</groupId><artifactId>jmxtools</artifactId></exclusion>
>      
> <exclusion><groupId>com.sun.jmx</groupId><artifactId>jmxri</artifactId></exclusion>
>     </exclusions>
>    </dependency>
>   </dependencies>
>  </dependencyManagement>
> So in any inheriting project I can simply depend on log4j and get the correct 
> version without the listed dependencies. This is important as some of these 
> dependencies cannot be resolved from the main Maven repository. They are in 
> fact optional, but not listed as such in the log4j pom. It is also Maven 
> practice to list such exclusions in the common ancestor instead of repeating 
> them in every module depending on log4j.
> Ivy 2 doesn't reproduce this kind of inherited exclusions. When I have an ivy 
> project depending on one of my projects, the modules are not excluded, 
> resulting in download errors for obscure packages. Looking at the ivy 
> descriptors in cache I find the missing exclusions.
> To fix this, PomDependencyMgtElement in PomReader.java would have to learn to 
> look out for exclusions. This information could than be used by 
> PomModuleDescriptorBuilder. More precisely, addDependencyMgt would have to 
> store it with the desciptor, and addDependency could then incorporate in its 
> inheritance calculations. The whole setup with extra information, with keys 
> calculated using getDependencyMgtExtraInfoKeyFor* and values restricted to 
> strings, seems ill suited to express the structure of the dependency 
> management information. I would prefer the ivy.xml to contain a 
> m2:dependencyManagement element, and use Maven POM syntax within that 
> element. I guess this approach would require larger modifications, though, so 
> I doubt that's a good idea for 2.0 at least.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to