[ 
http://jira.codehaus.org/browse/MNG-2923?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_92161
 ] 

Micah Whitacre commented on MNG-2923:
-------------------------------------

Ok so I tracked this down again and am now going to try and see if I can 
explain it.

I have a project that transitively inherits a project from multiple locations.  
Here is an example of the setup:

1. projectA:[1,3):test  depth of 4
2. projectA:[1,3):compile depth of 3
3. projectA:[1,2):test depth of 2
4. projectA:[1,2):compile depth of 3.

The version that should be resolved is 1.2 which is valid for all of those 
ranges.

When resolving the dependencies it  resolves them in that order.  By the time 
it is resolving the 3 instances the first instance has already been disabled.  
So when it is resolving the 3 instance it determines that based on the scopes 
it should enable 2 and disable 3.  On line 193 of DefaultArtifactCollector it 
sets the version of the farthest (instance 2).  Calling 
DefaultArtifact.setVersion(String) sets the versionRange of the artifact to 
null.  When trying to find a match for the versionRange when trying to resolve 
instance 4, on line 164 of DefaultArtifactCollector it can't find a match for 
instance 2 now because its range is null.  So then it throws the NPE on the 
toString() call.

Why is calling setVersion clearing out the versionRange?  Shouldn't it be 
acceptable to have both specified?

> Having any active profiles causes the build to fail
> ---------------------------------------------------
>
>                 Key: MNG-2923
>                 URL: http://jira.codehaus.org/browse/MNG-2923
>             Project: Maven 2
>          Issue Type: Bug
>          Components: Dependencies
>    Affects Versions: 2.0.6
>            Reporter: Matthew Beermann
>            Priority: Blocker
>         Attachments: pom.xml
>
>
> (This seems to be a regression in 2.0.6, and does not occur in 2.0.5.) If I 
> have any active profiles when building certain projects in Maven 2.0.6, the 
> build will fail. For example, adding something as simple as:
> <profiles>
>     <profile>
>         <id>foo</id>
>         <activation>
>             <activeByDefault>true</activeByDefault>
>         </activation>
>     </profile>
> </profiles>
> ...to my ~/.m2/settings.xml file will cause the stack trace below, but the 
> build will succeed once I remove it. I'm attaching  my POM for reference.
> [INFO] 
> ------------------------------------------------------------------------
> [ERROR] FATAL ERROR
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] null
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Trace
> java.lang.NullPointerException
>         at 
> org.apache.maven.artifact.resolver.DefaultArtifactCollector.recurse(DefaultArtifactCollector.java:164)
>         at 
> org.apache.maven.artifact.resolver.DefaultArtifactCollector.recurse(DefaultArtifactCollector.java:334)
>         at 
> org.apache.maven.artifact.resolver.DefaultArtifactCollector.recurse(DefaultArtifactCollector.java:334)
>         at 
> org.apache.maven.artifact.resolver.DefaultArtifactCollector.collect(DefaultArtifactCollector.java:75)
>         at 
> org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolveTransitively(DefaultArtifactResolver.java:284)
>         at 
> org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolveTransitively(DefaultArtifactResolver.java:272)
>         at 
> org.apache.maven.plugin.DefaultPluginManager.resolveTransitiveDependencies(DefaultPluginManager.java:1238)
>         at 
> org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:397)
>         at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:539)
>         at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:480)
>         at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:459)
>         at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:311)
>         at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:278)
>         at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:143)
>         at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:334)
>         at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:125)
>         at org.apache.maven.cli.MavenCli.main(MavenCli.java:272)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
>         at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
>         at 
> org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
>         at org.codehaus.classworlds.Launcher.main(Launcher.java:375)

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

        

Reply via email to