[
http://jira.codehaus.org/browse/MNG-5057?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Benjamin Bentmann closed MNG-5057.
----------------------------------
Resolution: Not A Bug
bq. Please note that the hibernate-entitymanager is scoped test, [...]
Therefore none of its transitive dependencies should affect a conflict
resolution when building the WAR
Well, this is a misunderstanding. Dependency resolution is independent of the
process consuming dependencies, i.e. it doesn't matter whether you package a
WAR or run a unit test, the set of artifacts is calculated once and each
artifact has exactly one scope. This ensures that the same dependency is used
during compilation, packaging and testing of the project. As such it doesn't
matter whether {{hibernate-entitymanager}} is scoped test, its transitive
dependencies have a conflict with other dependencies of the project and this
conflict needs to be solved. And as said, this conflict exists even when the
WAR is packaged which will not contain {{hibernate-entitymanager}} but can well
contain some of its transitive dependencies in case of conflicts with other
dependencies. Slightly modified example:
{noformat}
project
org.hibernate:hibernate-entitymanager:jar:3.4.0.GA:test
dom4j:dom4j:jar:1.6.1:compile
foo:bar:1:compile
org.axonframework:axon-core:jar:0.7.1:compile
dom4j:dom4j:jar:1.1:compile
{noformat}
Same conflict around {{dom4j}}. Following nearest-wins conflict resolution,
{{dom4j:1.6.1}} gets picked and the system has no solid foundation to argue
that it can safely drop {{foo:bar:1}} as a compile dependency without breaking
{{dom4j:1.6.1}}.
> The order in which you declare dependencies in pom.xml affect resulting WAR
> file
> --------------------------------------------------------------------------------
>
> Key: MNG-5057
> URL: http://jira.codehaus.org/browse/MNG-5057
> Project: Maven 2 & 3
> Issue Type: Bug
> Components: Dependencies
> Affects Versions: 3.0.3
> Environment: Apache Maven 3.0.3 (r1075438; 2011-02-28 18:31:09+0100)
> Maven home: /Users/lars/tools/apache-maven-3.0.3
> Java version: 1.6.0_24, vendor: Apple Inc.
> Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
> Default locale: en_US, platform encoding: MacRoman
> OS name: "mac os x", version: "10.6.6", arch: "x86_64", family: "mac"
> Reporter: Lars Vonk
> Assignee: Benjamin Bentmann
> Priority: Critical
> Attachments: web-with-xml-apis.zip, web-without-xml-apis.zip
>
>
> When I declare my pom as follows (see attached war-with-xml-apis.zip) then
> the jar file xml-apis-1.0.b2 is in my WAR file:
> {code:xml}
> <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>
> <groupId>ripe</groupId>
> <artifactId>web</artifactId>
> <packaging>war</packaging>
> <version>0.0.1-SNAPSHOT</version>
> <name>web Maven Webapp</name>
> <url>http://maven.apache.org</url>
> <dependencies>
> <dependency>
> <groupId>com.atomikos</groupId>
> <artifactId>transactions-jta</artifactId>
> <version>3.6.4</version>
> <scope>test</scope>
> </dependency>
> <dependency>
> <groupId>org.hibernate</groupId>
> <artifactId>hibernate-entitymanager</artifactId>
> <version>3.4.0.GA</version>
> <scope>test</scope>
> </dependency>
> <dependency>
> <groupId>org.axonframework</groupId>
> <artifactId>axon-core</artifactId>
> <version>0.7.1</version>
> <exclusions>
> <exclusion>
> <groupId>xml-apis</groupId>
> <artifactId>xml-apis</artifactId>
> </exclusion>
> </exclusions>
> </dependency>
> </dependencies>
> <build>
> <finalName>web</finalName>
> </build>
> </project>
> {code}
> However, when I declare my pom as follows (axon-core is moved one up) then
> the xml-apis.jar is no longer in my WAR.
> {code:xml}
> <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>
> <groupId>ripe</groupId>
> <artifactId>web</artifactId>
> <packaging>war</packaging>
> <version>0.0.1-SNAPSHOT</version>
> <name>web Maven Webapp</name>
> <url>http://maven.apache.org</url>
> <dependencies>
> <dependency>
> <groupId>com.atomikos</groupId>
> <artifactId>transactions-jta</artifactId>
> <version>3.6.4</version>
> <scope>test</scope>
> </dependency>
> <dependency>
> <groupId>org.axonframework</groupId>
> <artifactId>axon-core</artifactId>
> <version>0.7.1</version>
> <exclusions>
> <exclusion>
> <groupId>xml-apis</groupId>
> <artifactId>xml-apis</artifactId>
> </exclusion>
> </exclusions>
> </dependency>
> <dependency>
> <groupId>org.hibernate</groupId>
> <artifactId>hibernate-entitymanager</artifactId>
> <version>3.4.0.GA</version>
> <scope>test</scope>
> </dependency>
> </dependencies>
> <build>
> <finalName>web</finalName>
> </build>
> </project>
> {code}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira