ant-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Maarten Coene (JIRA)" <j...@apache.org>
Subject [jira] Commented: (IVY-974) Dependencies don't inherit exclusions from dependencyManagement
Date Wed, 25 Feb 2009 21:17:01 GMT

    [ 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.


Mime
View raw message