Details
-
Type:
Bug
-
Status:
Open
-
Priority:
Major
-
Resolution: Unresolved
-
Affects Version/s: 3.0-alpha-1
-
Fix Version/s: Issues to be reviewed for 3.x
-
Component/s: Dependencies
-
Labels:None
-
Environment:Java version: 1.6.0_07
OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows"
-
Complexity:Intermediate
-
Number of attachments :
Description
When invoking the 'mvn compile' command and a profile is active, defined in settings.xml, a variable substitution is not performed in a transitive dependency.
In the example provided the project to be built, C, depends on B which in its turn depends on A. The versions of B and A to be used are defined in a profile, the POM-files defines a variable indicating the versions. The profile in question is defined in the settings.xml and is always active (check with command 'mvn help:active-profiles'). The results of project A and B are successfully built and installed in the local repository.
Invoking a build for project C using a command line parameter indicating, 'mvn compile -Dparentversion=0.0.1-SNAPSHOT, the versions render a successful build. The transitive dependency is resolved correctly.
This problem is also visible in Eclipse, m2eclipse, as the project C in the example provided, does not build (error indication). The example provided includes Eclipse projects displaying this (version 0.9.7.20081001-2217 of the Eclipse plugin is used).
The settings.xml and a build log are provided as attachments to this issue.
The uploaded file (MavenCli.java) has an altered version of MavenCli, it has a piece of code added to a section of the main(...) method. The "patch" passed the properties of an active profile to the system properties. Thus, in our case, we get a variable substitution performed accordingly. This can, however, also be performed by passing the properties in question using the '-D..' option on the command line. This might be a problem though when invoked from an automatic build tool.