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

germuska edited comment on MNG-3086 at 1/21/08 11:06 AM:
-------------------------------------------------------------

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 "farthest version" 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.




      was (Author: germuska):
    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

        

Reply via email to