You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2014/05/18 09:25:16 UTC

svn commit: r1595568 - /maven/shared/trunk/maven-reporting-exec/src/main/java/org/apache/maven/reporting/exec/DefaultMavenReportExecutor.java

Author: hboutemy
Date: Sun May 18 07:25:16 2014
New Revision: 1595568

URL: http://svn.apache.org/r1595568
Log:
[MSHARED-266] always fork, since it is expected by cobertura plugin for example, but don't execute aggregate reports automatically added if not root execution

Modified:
    maven/shared/trunk/maven-reporting-exec/src/main/java/org/apache/maven/reporting/exec/DefaultMavenReportExecutor.java

Modified: maven/shared/trunk/maven-reporting-exec/src/main/java/org/apache/maven/reporting/exec/DefaultMavenReportExecutor.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-reporting-exec/src/main/java/org/apache/maven/reporting/exec/DefaultMavenReportExecutor.java?rev=1595568&r1=1595567&r2=1595568&view=diff
==============================================================================
--- maven/shared/trunk/maven-reporting-exec/src/main/java/org/apache/maven/reporting/exec/DefaultMavenReportExecutor.java (original)
+++ maven/shared/trunk/maven-reporting-exec/src/main/java/org/apache/maven/reporting/exec/DefaultMavenReportExecutor.java Sun May 18 07:25:16 2014
@@ -236,6 +236,13 @@ public class DefaultMavenReportExecutor
                 throw new MojoNotFoundException( report.getGoal(), pluginDescriptor );
             }
 
+            MavenProject project = mavenReportExecutorRequest.getProject();
+            if ( !userDefinedReports && mojoDescriptor.isAggregator() && !canAggregate( project ) )
+            {
+                // aggregator mojos automatically added from plugin are only run at execution root
+                continue;
+            }
+
             MojoExecution mojoExecution = new MojoExecution( plugin, report.getGoal(), null );
 
             mojoExecution.setMojoDescriptor( mojoDescriptor );
@@ -267,32 +274,32 @@ public class DefaultMavenReportExecutor
                 new MavenReportExecution( report.getGoal(), mojoExecution.getPlugin(), mavenReport,
                                           pluginDescriptor.getClassRealm() );
 
-            if ( canGenerateReport( mavenReport, mojoExecution ) )
-            {
-                lifecycleExecutor.calculateForkedExecutions( mojoExecution,
-                                                             mavenReportExecutorRequest.getMavenSession() );
+            lifecycleExecutor.calculateForkedExecutions( mojoExecution,
+                                                         mavenReportExecutorRequest.getMavenSession() );
 
-                if ( !mojoExecution.getForkedExecutions().isEmpty() )
+            if ( !mojoExecution.getForkedExecutions().isEmpty() )
+            {
+                String msg = report.getGoal() + " report requires ";
+                if ( StringUtils.isNotEmpty( mojoDescriptor.getExecutePhase() ) )
                 {
-                    String msg = report.getGoal() + " report requires ";
-                    if ( StringUtils.isNotEmpty( mojoDescriptor.getExecutePhase() ) )
-                    {
-                        // forked phase
-                        String lifecycleId =
-                            StringUtils.isEmpty( mojoDescriptor.getExecuteLifecycle() ) ? ""
-                                            : ( '[' + mojoDescriptor.getExecuteLifecycle() + ']' );
-                        logger.info( msg + lifecycleId + mojoDescriptor.getExecutePhase() + " forked phase execution" );
-                    }
-                    else
-                    {
-                        // forked goal
-                        logger.info( msg + mojoDescriptor.getExecuteGoal() + " forked goal execution" );
-                    }
-
-                    lifecycleExecutor.executeForkedExecutions( mojoExecution,
-                                                               mavenReportExecutorRequest.getMavenSession() );
+                    // forked phase
+                    String lifecycleId =
+                        StringUtils.isEmpty( mojoDescriptor.getExecuteLifecycle() ) ? ""
+                                        : ( '[' + mojoDescriptor.getExecuteLifecycle() + ']' );
+                    logger.info( msg + lifecycleId + mojoDescriptor.getExecutePhase() + " forked phase execution" );
+                }
+                else
+                {
+                    // forked goal
+                    logger.info( msg + mojoDescriptor.getExecuteGoal() + " forked goal execution" );
                 }
 
+                lifecycleExecutor.executeForkedExecutions( mojoExecution,
+                                                           mavenReportExecutorRequest.getMavenSession() );
+            }
+
+            if ( canGenerateReport( mavenReport, mojoExecution ) )
+            {
                 reports.add( mavenReportExecution );
             }
         }
@@ -300,6 +307,12 @@ public class DefaultMavenReportExecutor
         return reports;
     }
 
+    private boolean canAggregate( MavenProject project )
+    {
+        return project.isExecutionRoot() && "pom".equals( project.getPackaging() ) && ( project.getModules() != null )
+            && !project.getModules().isEmpty();
+    }
+
     private boolean canGenerateReport( MavenReport mavenReport, MojoExecution mojoExecution )
     {
         ClassLoader originalClassLoader = Thread.currentThread().getContextClassLoader();