You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by "Brett Porter (JIRA)" <ji...@codehaus.org> on 2005/10/06 09:07:12 UTC

[jira] Closed: (MNG-1088) Plugins built and used within the same multiproject build fail unless lifecycle phase is compile or later

     [ http://jira.codehaus.org/browse/MNG-1088?page=all ]
     
Brett Porter closed MNG-1088:
-----------------------------

     Assign To: Brett Porter
    Resolution: Fixed

> Plugins built and used within the same multiproject build fail unless lifecycle phase is compile or later
> ---------------------------------------------------------------------------------------------------------
>
>          Key: MNG-1088
>          URL: http://jira.codehaus.org/browse/MNG-1088
>      Project: Maven 2
>         Type: Bug
>   Components: maven-core
>  Environment: Win2000 Pro
> Problem occurs on M2-2.0-BETA-2 as well as current SVN HEAD (M2-2.0-beta-4-SNAPSHOT)
>     Reporter: Paul Russell
>     Assignee: Brett Porter
>      Fix For: 2.0-beta-4

>
>
> In my scenario, I have a plugin and the code that /uses/ this plugin within the same multiproject build. Example layout:
> <pre>
> - root-project
> +- plugins-root
> |+- plugin-project (2)
> +- application-root
>  +- application-module (1)
> </pre>
> In my situation, application-module (1) references plugin-project (2) as a plugin.
> If I do m2 eclipse:eclipse in on the root project, I get the following NPE:
> <pre>
> java.lang.NullPointerException
>         at org.codehaus.plexus.DefaultPlexusContainer.addJarResource(DefaultPlexusContainer.java:1351)
>         at org.codehaus.plexus.DefaultPlexusContainer.createChildContainer(DefaultPlexusContainer.java:244)
>         at org.apache.maven.plugin.DefaultPluginManager.addPlugin(DefaultPluginManager.java:286)
>         at org.apache.maven.plugin.DefaultPluginManager.verifyVersionedPlugin(DefaultPluginManager.java:186)
>         at org.apache.maven.plugin.DefaultPluginManager.verifyPlugin(DefaultPluginManager.java:161)
>         at org.apache.maven.lifecycle.DefaultLifecycleExecutor.verifyPlugin(DefaultLifecycleExecutor.java:1057)
>         at org.apache.maven.lifecycle.DefaultLifecycleExecutor.bindPluginToLifecycle(DefaultLifecycleExecutor.java:1022)
>         at org.apache.maven.lifecycle.DefaultLifecycleExecutor.constructLifecycleMappings(DefaultLifecycleExecutor.java:854)
>         at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkProjectLifecycle(DefaultLifecycleExecutor.java:737)
>         at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkLifecycle(DefaultLifecycleExecutor.java:721)
>         at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:531)
>         at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:517)
>         at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:498)
>         at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:307)
>         at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:149)
>         at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:217)
>         at org.apache.maven.cli.MavenCli.main(MavenCli.java:247)
>         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)
> </pre>
> After a bit of digging around, I have tracked this down to the fact that the plugin project's artifact is a ActiveProjectArtifact in this context, and before a compile has been achieved, ActiveProjectArtifact.getFile() returns null (because it returns the project artifact's file, which is null).
> This same issue is triggered if any lifecycle phase prior to 'compile' is requested on the root project.
> There is a workaround, which is to execute the troublesome goal from within the 'application-root' project, but I can't help but think this is something that should just work. Unfortunately, I can't see a clean solution to this right now. The only thing I can think is that having an intra-reactor plugin dependency should force the compile lifecycle to execute on that plugin prior to the plugin being added to the plugin manager. Unfortunately I'm struggling to understand how to achieve that at the moment.
> If a solution to this can't be found, it is probably worth adding an error trap within the plugin manager to catch errant ActiveProjectArtifacts before they are added to plexus and display a more helpful error message.
> I'll have a think and see if I can find an elegant solution.

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


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org