[
http://jira.codehaus.org/browse/MNG-3086?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_120793
]
Joe Germuska commented on MNG-3086:
-----------------------------------
Some more information, although I am still learning my way through M2 code.
Egor, thanks for the idea of adding debug to a local build. For general
information, the above workaround doesn't work with 2.0.9-SNAPSHOT code; the
error doesn't get to that location (although I'm pretty sure it's ultimately
the same error.) I was able to sneak in some debug in
DefaultArtifact.setBaseVersionInternal to catch a null before it throws an NPE:
if ( checkScopeUpdate( farthest, nearest, listeners ) )
{
// if we need to update scope of nearest to use
farthest scope, use the nearest version, but farthest scope
nearest.disable();
if (nearest.getArtifact().getVersion() == null) {
throw new NullPointerException("nearest
artifact has null version so setVersion will error: nearest: " + nearest + ";
farthest: " + farthest);
}
farthest.getArtifact().setVersion(
nearest.getArtifact().getVersion() );
Because now in artifact.setVersion there's a regex Matcher that throws an NPE
if the nearest artifact's version is null.
This happens when the "nearest" artifact is a ranged-version dependency. In
this case, the immediate work-around was to create an explicit dependency on
the same version as "farthest" AT THE TOP of the <dependencies> list, so that
it overrides the ranged dependency before a transitive dependency resolution
runs into this problem.
This should probably be either filed as a separate bug more directly
implicating ranged transitive dependencies, or the name of this bug should be
changed. If Maven developers need any more info I can try to provide some, but
as much time as I've sunk into tracking this down, I'm short on time to file a
test case at the moment.
> NullPointerException in ResolutionNode.getTrail(ResolutionNode.java:136)
> ------------------------------------------------------------------------
>
> Key: MNG-3086
> URL: http://jira.codehaus.org/browse/MNG-3086
> Project: Maven 2
> Issue Type: Bug
> Components: Errors
> Affects Versions: 2.0.7
> Reporter: Thomas Leonard
> Fix For: 2.0.x
>
>
> After upgrading from 2.0.6 to 2.0.7, our build fails with:
> [INFO] [resources:resources]
> [INFO] Using default encoding to copy filtered resources.
> [INFO]
> ------------------------------------------------------------------------
> [ERROR] FATAL ERROR
> [INFO]
> ------------------------------------------------------------------------
> [INFO] null
> [INFO]
> ------------------------------------------------------------------------
> [INFO] Trace
> java.lang.NullPointerException
> at
> org.apache.maven.artifact.resolver.ResolutionNode.getTrail(ResolutionNode.java:136)
> at
> org.apache.maven.artifact.resolver.ResolutionNode.filterTrail(ResolutionNode.java:211)
> at
> org.apache.maven.artifact.resolver.DefaultArtifactCollector.collect(DefaultArtifactCollector.java:89)
> 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:280)
> 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)
> Thanks,
--
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