Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 3.0-alpha-7
-
Fix Version/s: 3.0-beta-1
-
Component/s: Dependencies
-
Labels:None
-
Environment:HideApache Maven 3.0-alpha-7 (r921173; 2010-03-09 23:31:07+0100)
Java version: 1.5.0_17
Java home: c:\projet\MM\outils\jdk\1.5.0\jre
Default locale: fr_FR, platform encoding: Cp1252
OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows"ShowApache Maven 3.0-alpha-7 (r921173; 2010-03-09 23:31:07+0100) Java version: 1.5.0_17 Java home: c:\projet\MM\outils\jdk\1.5.0\jre Default locale: fr_FR, platform encoding: Cp1252 OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows"
-
Complexity:Intermediate
-
Testcase included:yes
-
Number of attachments :
Description
The situation is quite complex to explain. I've a parent pom that defines dependencies in depMgmt. There's two projects in the multimodule project, the second depending on the first.
Excerpt (parent/depMgmt):
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>$
</version>
<scope>runtime</scope>
<optional>true</optional>
First child (redefines scope only):
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<scope>compile</scope>
</dependency>
Second child:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>m3pb</groupId>
<artifactId>subproject1</artifactId>
<version>$
</version>
</dependency>
When running with maven 2, it works. When ran with maven 3, it fails on the second project, with a NoClassDefFoundError on the logback jar.
I seem to understand this is actually a bug in maven 2: as the depMgmt defines optional=true, it shouldn't have been working in maven2 without redeclaring the dependency in the second project.
From my understanding:
- With maven 2, the transivity is taken in account and gives logback through the subproject1 link (from the second)
- With maven 3, this just doesn't work and this is the correct behaviour.
Please excuse my basic analysis.
I'm attaching a test project to let see more precisely the problem.
If you need any help, please let me know.
Cheers
--
Baptiste
Issue Links
- is related to
-
MNG-1630
Optional tag in dependencyManagement is not inherited in the children projects
-
Activity
| Field | Original Value | New Value |
|---|---|---|
| Fix Version/s | 3.0-alpha-8 [ 16088 ] |
| Summary | Dependency not retrieved with maven 3 although it was with maven 2 | [regression] Optional flag from dependency management applied to dependencies |
| Status | Open [ 1 ] | Closed [ 6 ] |
| Assignee | Benjamin Bentmann [ bentmann ] | |
| Resolution | Fixed [ 1 ] |
| Fix Version/s | 3.0-beta-1 [ 16089 ] | |
| Fix Version/s | 3.0-alpha-8 [ 16088 ] |
An addon, to show the difference with mvn dependency:tree:
With maven3:
Nothing
With Maven 2.2.1:
[INFO] m3pb:sub2:jar:1.0-SNAPSHOT
[INFO] - m3pb:subproject1:jar:1.0-SNAPSHOT:compile
[INFO] - ch.qos.logback:logback-classic:jar:0.9.14:runtime (scope managed from compile)
[INFO] - ch.qos.logback:logback-core:jar:0.9.14:runtime
Cheers