[ 
http://jira.codehaus.org/browse/MSITE-504?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=235656#action_235656
 ] 

Marvin Froeder edited comment on MSITE-504 at 9/17/10 3:03 PM:
---------------------------------------------------------------

I came up with a quick dirty patch, not sure if that is the best way to deal 
with the problem but it did solve my problems here.

{code}
Index: 
src/main/java/org/apache/maven/plugins/site/DefaultMavenReportExecutor.java
===================================================================
--- src/main/java/org/apache/maven/plugins/site/DefaultMavenReportExecutor.java 
(revision 998149)
+++ src/main/java/org/apache/maven/plugins/site/DefaultMavenReportExecutor.java 
(working copy)
@@ -291,15 +291,15 @@
     {
         try
         {
-            Mojo mojo = mavenPluginManager.getConfiguredMojo( Mojo.class,
-                                                              
mavenReportExecutorRequest.getMavenSession(),
-                                                              mojoExecution );
-
-            if ( !isMavenReport( mojoExecution, pluginDescriptor, mojo ) )
+            if ( !isMavenReport( mojoExecution, pluginDescriptor ) )
             {
                 return null;
             }
 
+            Mojo mojo = mavenPluginManager.getConfiguredMojo( Mojo.class,
+                                                              
mavenReportExecutorRequest.getMavenSession(),
+                                                              mojoExecution );
+            
             return (MavenReport) mojo;
         }
         catch ( ClassCastException e )
@@ -328,15 +328,25 @@
         }
     }
 
-    private boolean isMavenReport( MojoExecution mojoExecution, 
PluginDescriptor pluginDescriptor, Mojo mojo )
+    private boolean isMavenReport( MojoExecution mojoExecution, 
PluginDescriptor pluginDescriptor )
     {
-        ClassLoader originalClassLoader = 
Thread.currentThread().getContextClassLoader();
+        Class<?> mojoClass;
+        try
+        {
+            mojoClass =
+                pluginDescriptor.getClassRealm().loadClass( 
mojoExecution.getMojoDescriptor().getImplementation() );
+        }
+        catch ( ClassNotFoundException e )
+        {
+            // TODO needs to decide what to do here, throws another error? 
silent ignore?
+            mojoClass = null;
+        }
+
         try
         {
             MojoDescriptor mojoDescriptor = pluginDescriptor.getMojo( 
mojoExecution.getGoal() );
-            Thread.currentThread().setContextClassLoader( 
mojoDescriptor.getRealm() );
 
-            boolean isMavenReport = MavenReport.class.isAssignableFrom( 
mojo.getClass() );
+            boolean isMavenReport = MavenReport.class.isAssignableFrom( 
mojoClass );
 
             if ( getLog().isDebugEnabled() )
             {
@@ -360,10 +370,6 @@
                            e );
             return false;
         }
-        finally
-        {
-            Thread.currentThread().setContextClassLoader( originalClassLoader 
);
-        }
     }
 
     private Xpp3Dom convert( MojoDescriptor mojoDescriptor )
{code}



      was (Author: velo):
    I came up with a quick dirty patch, not sure if that is the best way to 
deal with the problem but it did solve my problems here.

{code}
Index: 
src/main/java/org/apache/maven/plugins/site/DefaultMavenReportExecutor.java
===================================================================
--- src/main/java/org/apache/maven/plugins/site/DefaultMavenReportExecutor.java 
(revision 998149)
+++ src/main/java/org/apache/maven/plugins/site/DefaultMavenReportExecutor.java 
(working copy)
@@ -48,8 +48,10 @@
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.reporting.MavenReport;
 import org.codehaus.classworlds.ClassRealm;
+import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
+import 
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 import org.codehaus.plexus.configuration.PlexusConfiguration;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.StringUtils;
@@ -103,6 +105,9 @@
     implements MavenReportExecutor
 {
     @Requirement
+    private PlexusContainer container;
+
+    @Requirement
     private Logger logger;
 
     @Requirement
@@ -291,6 +296,37 @@
     {
         try
         {
+            Mojo unconfiguredMojo;
+            
+            org.codehaus.plexus.classworlds.realm.ClassRealm pluginRealm = 
pluginDescriptor.getClassRealm();
+            org.codehaus.plexus.classworlds.realm.ClassRealm oldLookupRealm = 
container.setLookupRealm( pluginRealm );
+
+            ClassLoader oldClassLoader = 
Thread.currentThread().getContextClassLoader();
+
+            try
+            {
+                container.setLookupRealm( pluginRealm );
+                Thread.currentThread().setContextClassLoader( pluginRealm );
+                unconfiguredMojo = container.lookup( Mojo.class, 
mojoExecution.getMojoDescriptor().getRoleHint() );
+            }
+            catch ( ComponentLookupException e )
+            {
+                throw new PluginContainerException( 
mojoExecution.getMojoDescriptor(), pluginRealm,
+                                                    "Unable to load the mojo '"
+                                                        + 
mojoExecution.getMojoDescriptor().getGoal()
+                                                        + "' (or one of its 
required components) from the plugin '"
+                                                        + 
pluginDescriptor.getId() + "'", e );
+            }
+            finally
+            {
+                container.setLookupRealm( oldLookupRealm );
+                Thread.currentThread().setContextClassLoader( oldClassLoader );
+            }
+            
+            if(!MavenReport.class.isAssignableFrom( 
unconfiguredMojo.getClass() )) {
+                return null;
+            }
+            
             Mojo mojo = mavenPluginManager.getConfiguredMojo( Mojo.class,
                                                               
mavenReportExecutorRequest.getMavenSession(),
                                                               mojoExecution );
{code}


  
> Maven site fails to run due to non-report goals
> -----------------------------------------------
>
>                 Key: MSITE-504
>                 URL: http://jira.codehaus.org/browse/MSITE-504
>             Project: Maven 2.x Site Plugin
>          Issue Type: Bug
>    Affects Versions: 3.0-beta-2
>            Reporter: Marvin Froeder
>            Assignee: Olivier Lamy
>
> An user just reported me a curious bug when using flexmojos and maven 3.... 
> {quote}
> [ERROR] Failed to execute goal 
> org.apache.maven.plugins:maven-site-plugin:3.0-beta-2:site (default-cli) on 
> project calculator-api: failed to get Reports: The parameters 'filesToTrust' 
> for goal org.sonatype.flexmojos:flexmojos-maven-plugin:4.0-SNAPSHOT:trust are 
> missing or invalid -> [Help 1]
> org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute 
> goal org.apache.maven.plugins:maven-site-plugin:3.0-beta-2:site (default-cli) 
> on project calculator-api: failed to get Reports 
>       at 
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
>       at 
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:88)
>       at 
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:80)
>       at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:87)
>       at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
>       at 
> org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
>       at 
> org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
>       at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:315)
>       at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:152)
>       at org.apache.maven.cli.MavenCli.execute(MavenCli.java:445)
>       at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:168)
>       at org.apache.maven.cli.MavenCli.main(MavenCli.java:132)
>       at 
> org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
>       at 
> org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
>       at 
> org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
>       at 
> org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
> Caused by: org.apache.maven.plugin.MojoExecutionException: failed to get 
> Reports 
>       at 
> org.apache.maven.plugins.site.DefaultMavenReportExecutor.buildMavenReports(DefaultMavenReportExecutor.java:264)
>       at 
> org.apache.maven.plugins.site.AbstractSiteRenderingMojo.getReports(AbstractSiteRenderingMojo.java:208)
>       at org.apache.maven.plugins.site.SiteMojo.execute(SiteMojo.java:105)
>       at 
> org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:107)
>       at 
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
>       ... 19 more
> Caused by: org.apache.maven.plugin.PluginParameterException: The parameters 
> 'filesToTrust' for goal 
> org.sonatype.flexmojos:flexmojos-maven-plugin:4.0-SNAPSHOT:trust are missing 
> or invalid
>       at 
> org.apache.maven.plugin.internal.DefaultMavenPluginManager.populatePluginFields(DefaultMavenPluginManager.java:514)
>       at 
> org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:467)
>       at 
> org.apache.maven.plugins.site.DefaultMavenReportExecutor.getConfiguredMavenReport(DefaultMavenReportExecutor.java:294)
>       at 
> org.apache.maven.plugins.site.DefaultMavenReportExecutor.buildMavenReports(DefaultMavenReportExecutor.java:234)
>       ... 23 more
> {quote}
> This goal 'trust' is NOT a Maven report and this user never invokes it, but 
> seems maven-site creeps out with this goal, seems maven is trying to 
> configure it and fail because 'filesToTrust' is required but not configured.
> Since the goal is neither used nor a maven-report it shouldn't affect 
> maven-site at all.
> I will create an IT for this in a few minutes

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