maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tibor Varga (JIRA)" <j...@codehaus.org>
Subject [jira] Created: (MNG-4930) List of active profiles defined in ~/.m2/settings.xml gets lost when parsing dependency POMs
Date Wed, 08 Dec 2010 21:11:57 GMT
List of active profiles defined in ~/.m2/settings.xml gets lost when parsing dependency POMs
--------------------------------------------------------------------------------------------

                 Key: MNG-4930
                 URL: http://jira.codehaus.org/browse/MNG-4930
             Project: Maven 2 & 3
          Issue Type: Bug
          Components: Dependencies, Profiles, Reactor and workspace, Settings
    Affects Versions: 3.0.1, 3.0, 2.2.1, 3.0.2
         Environment: Windows, Mac OS X, quite possibly all others
            Reporter: Tibor Varga
         Attachments: maven-bug.patch, root.zip, settings.xml

Scenario:

* {{root}} project with two sub projects, {{test-api}} and {{test-impl}}
* {{~/.m2/settings.xml}} defines a property in a profile, {{xxx}}.
* {{root/pom.xml}} defines a property, {{yyy}}, and a profile that defines another property,
{{zzz}}.
* {{test-impl}} depends on {{test-api}}
* {{test-api}} declares a dependency that uses {{xxx}} as the {{groupId}}, {{yyy}} as the
{{artifactId}} and {{zzz}} as the {{type}}.
* Compile the {{root}} project with Maven ({{mvn compile}}), making sure the profiles are
active, one way or another.

When {{test-api}} is compiled, all goes well. When {{test-impl}} is compiled, Maven warns
of the following:

{noformat}
[WARNING] The POM for test:test-api:jar:1.0-SNAPSHOT is invalid, transitive dependencies (if
any) will not be available,
enable debug logging for more details
{noformat}

Turning on debuggig ({{mvn -X compile}}) prints:
{noformat}
[WARNING] The POM for test:test-api:jar:1.0-SNAPSHOT is invalid, transitive dependencies (if
any) will not be available:
1 problem was encountered while building the effective model for test:test-api:1.0-SNAPSHOT
[ERROR] 'dependencies.dependency.groupId' for ${xxx}:junit:jar with value '${xxx}' does not
match a valid id pattern. @ 
{noformat}

Apparently, property interpolation failed for {{xxx}} but not for {{yyy}} or {{zzz}}, and
{{xxx}} fails only when it is referenced in a _dependency_ of the current project. When it
is referenced in the current project, it gets properly interpolated.

What actually happens is that the list of active profiles defined outside the reactor gets
lost when resolving dependencies of the current project. They are available when the current
project's POM is parsed but not when parsing the POM of the current project's dependencies.

Now, although this is just a warning in my sample scenario, the consequences in real life
are more serious: "no transitive dependencies" means, e.g., modules not compiling that should,
or JAR artifacts missing from a WAR artifact, etc., unless the user manually duplicates all
the transitive dependencies missed by Maven, in the project that did not compile, or missed
a few JAR files from its WAR artifact.

Attached is a sample multi-module project as described above, a {{settings.xml}} file required
for the project to compile and a patch that shows how the problem _could_ be eliminated on
the maven-3 trunk ({{http://svn.apache.org/repos/asf/maven/maven-3/trunk}}).

The attached sample will give no warning prior to Maven 3.0 but if {{test-impl}} were to actually
require {{test-api}}'s dependencies to compile, the problem would surface also with Maven
2.2.1 and possibly earlier.

I don't think the attached patch is an elegant solution but it has the quality of touching
very few files and having little or no side effect other than fixing the problem outlined
above. In short, please, make a better fix.

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

        

Mime
View raw message