[
https://issues.apache.org/jira/browse/IVY-974?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Maarten Coene resolved IVY-974.
-------------------------------
Resolution: Fixed
Fix Version/s: trunk
Assignee: Maarten Coene
I've applied the patch to SVN trunk and added a junit test.
Thanks a lot for the contribution!
Maarten
> 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
> Assignee: Maarten Coene
> Fix For: trunk
>
> Attachments: parent_dependency_mgt_excludes.patch,
> parent_dependency_mgt_excludes_2.patch, parent_dependency_mgt_excludes_3.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.