You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by br...@apache.org on 2005/10/03 06:49:26 UTC

svn commit: r293235 - in /maven/components/trunk/maven-core/src/main/java/org/apache/maven: DefaultMaven.java execution/MavenExecutionResponse.java lifecycle/DefaultLifecycleExecutor.java

Author: brett
Date: Sun Oct  2 21:49:21 2005
New Revision: 293235

URL: http://svn.apache.org/viewcvs?rev=293235&view=rev
Log:
PR: MNG-844, MNG-1073
o aggregating goal that forks a lifecycle should run reactor over projects
o don't show reactor summary if an aggregation goal was run that didn't fork a lifecycle.

Modified:
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionResponse.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=293235&r1=293234&r2=293235&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java Sun Oct  2 21:49:21 2005
@@ -229,7 +229,7 @@
                     {
                         logFailure( response, exception, null );
 
-                        if ( rm.hasMultipleProjects() )
+                        if ( rm.hasMultipleProjects() && response.executedMultipleProjects() )
                         {
                             writeReactorSummary( rm );
                         }
@@ -600,7 +600,7 @@
                 if ( diagnoser.canDiagnose( error ) )
                 {
                     message = diagnoser.diagnose( error );
-                    
+
                     // first one wins.
                     break;
                 }
@@ -644,7 +644,7 @@
                 if ( diagnoser.canDiagnose( error ) )
                 {
                     message = diagnoser.diagnose( error );
-                    
+
                     // first one wins.
                     break;
                 }
@@ -675,10 +675,6 @@
             line();
         }
 
-        getLogger().info( "BUILD FAILURE" );
-
-        line();
-
         stats( r.getStart(), r.getFinish() );
 
         line();
@@ -686,7 +682,7 @@
 
     protected void logSuccess( MavenExecutionResponse r, ReactorManager rm )
     {
-        if ( rm.hasMultipleProjects() )
+        if ( rm.hasMultipleProjects() && r.executedMultipleProjects() )
         {
             writeReactorSummary( rm );
         }

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionResponse.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionResponse.java?rev=293235&r1=293234&r2=293235&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionResponse.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionResponse.java Sun Oct  2 21:49:21 2005
@@ -30,13 +30,15 @@
 
     private Date finish;
 
+    private boolean executedMultipleProjects;
+
     // ----------------------------------------------------------------------
     // Execution failure
     // ----------------------------------------------------------------------
 
     public boolean isExecutionFailure()
     {
-        return ( exception != null );
+        return exception != null;
     }
 
     // ----------------------------------------------------------------------
@@ -75,5 +77,15 @@
     public void setFinish( Date finish )
     {
         this.finish = finish;
+    }
+
+    public boolean executedMultipleProjects()
+    {
+        return executedMultipleProjects;
+    }
+
+    public void setExecutedMultipleProjects( boolean executedMultipleProjects )
+    {
+        this.executedMultipleProjects = executedMultipleProjects;
     }
 }

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=293235&r1=293234&r2=293235&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Sun Oct  2 21:49:21 2005
@@ -37,10 +37,10 @@
 import org.apache.maven.monitor.event.MavenEvents;
 import org.apache.maven.plugin.MojoExecution;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugin.PluginManager;
 import org.apache.maven.plugin.PluginManagerException;
 import org.apache.maven.plugin.PluginNotFoundException;
-import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugin.descriptor.MojoDescriptor;
 import org.apache.maven.plugin.descriptor.PluginDescriptor;
 import org.apache.maven.plugin.lifecycle.Execution;
@@ -73,6 +73,7 @@
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  * @version $Id: DefaultLifecycleExecutor.java,v 1.16 2005/03/04 09:04:25
  *          jdcasey Exp $
+ * @todo because of aggregation, we ended up with cli-ish stuff in here (like line() and the project logging, without much of the event handling)
  */
 public class DefaultLifecycleExecutor
     extends AbstractLogEnabled
@@ -150,7 +151,7 @@
                 artifactHandlerManager.addHandlers( handlers );
             }
 
-            executeTaskSegments( taskSegments, rm, session, rootProject, dispatcher );
+            executeTaskSegments( taskSegments, rm, session, rootProject, dispatcher, response );
 
             if ( ReactorManager.FAIL_AT_END.equals( rm.getFailureBehavior() ) && rm.hasBuildFailures() )
             {
@@ -198,7 +199,8 @@
     }
 
     private void executeTaskSegments( List taskSegments, ReactorManager rm, MavenSession session,
-                                      MavenProject rootProject, EventDispatcher dispatcher )
+                                      MavenProject rootProject, EventDispatcher dispatcher,
+                                      MavenExecutionResponse response )
         throws PluginNotFoundException, MojoExecutionException, ArtifactResolutionException,
         LifecycleExecutionException, MojoFailureException
     {
@@ -233,7 +235,7 @@
 
                             try
                             {
-                                executeGoal( task, session, rootProject );
+                                executeGoal( task, session, rootProject, response );
                             }
                             catch ( MojoExecutionException e )
                             {
@@ -276,6 +278,8 @@
             {
                 List sortedProjects = session.getSortedProjects();
 
+                response.setExecutedMultipleProjects( true );
+
                 // iterate over projects, and execute on each...
                 for ( Iterator projectIterator = sortedProjects.iterator(); projectIterator.hasNext(); )
                 {
@@ -305,7 +309,7 @@
 
                                 try
                                 {
-                                    executeGoal( task, session, currentProject );
+                                    executeGoal( task, session, currentProject, response );
                                 }
                                 catch ( MojoExecutionException e )
                                 {
@@ -484,7 +488,7 @@
         return segments;
     }
 
-    private void executeGoal( String task, MavenSession session, MavenProject project )
+    private void executeGoal( String task, MavenSession session, MavenProject project, MavenExecutionResponse response )
         throws LifecycleExecutionException, PluginNotFoundException, MojoExecutionException,
         ArtifactResolutionException, MojoFailureException
     {
@@ -492,32 +496,33 @@
         {
             // we have a lifecycle phase, so lets bind all the necessary goals
             Map lifecycleMappings = constructLifecycleMappings( session, task, project );
-            executeGoalWithLifecycle( task, session, lifecycleMappings, project );
+            executeGoalWithLifecycle( task, session, lifecycleMappings, project, response );
         }
         else
         {
-            executeStandaloneGoal( task, session, project );
+            executeStandaloneGoal( task, session, project, response );
         }
     }
 
     private void executeGoalWithLifecycle( String task, MavenSession session, Map lifecycleMappings,
-                                           MavenProject project )
+                                           MavenProject project, MavenExecutionResponse response )
         throws ArtifactResolutionException, LifecycleExecutionException, MojoExecutionException, MojoFailureException
     {
         List goals = processGoalChain( task, lifecycleMappings );
 
-        executeGoals( goals, session, project );
+        executeGoals( goals, session, project, response );
     }
 
-    private void executeStandaloneGoal( String task, MavenSession session, MavenProject project )
+    private void executeStandaloneGoal( String task, MavenSession session, MavenProject project,
+                                        MavenExecutionResponse response )
         throws ArtifactResolutionException, LifecycleExecutionException, MojoExecutionException, MojoFailureException
     {
         // guaranteed to come from the CLI and not be part of a phase
         MojoDescriptor mojoDescriptor = getMojoDescriptor( task, session, project, task, true );
-        executeGoals( Collections.singletonList( new MojoExecution( mojoDescriptor ) ), session, project );
+        executeGoals( Collections.singletonList( new MojoExecution( mojoDescriptor ) ), session, project, response );
     }
 
-    private void executeGoals( List goals, MavenSession session, MavenProject project )
+    private void executeGoals( List goals, MavenSession session, MavenProject project, MavenExecutionResponse response )
         throws LifecycleExecutionException, MojoExecutionException, ArtifactResolutionException, MojoFailureException
     {
         for ( Iterator i = goals.iterator(); i.hasNext(); )
@@ -528,7 +533,7 @@
 
             if ( mojoDescriptor.getExecutePhase() != null || mojoDescriptor.getExecuteGoal() != null )
             {
-                forkLifecycle( mojoDescriptor, session, project );
+                forkLifecycle( mojoDescriptor, session, project, response );
             }
 
             if ( mojoDescriptor.isRequiresReports() )
@@ -544,7 +549,7 @@
 
                     if ( descriptor.getExecutePhase() != null )
                     {
-                        forkLifecycle( descriptor, session, project );
+                        forkLifecycle( descriptor, session, project, response );
                     }
                 }
             }
@@ -692,12 +697,42 @@
         return reports;
     }
 
-    private void forkLifecycle( MojoDescriptor mojoDescriptor, MavenSession session, MavenProject project )
+    private void forkLifecycle( MojoDescriptor mojoDescriptor, MavenSession session, MavenProject project,
+                                MavenExecutionResponse response )
         throws LifecycleExecutionException, MojoExecutionException, ArtifactResolutionException, MojoFailureException
     {
         PluginDescriptor pluginDescriptor = mojoDescriptor.getPluginDescriptor();
         getLogger().info( "Preparing " + pluginDescriptor.getGoalPrefix() + ":" + mojoDescriptor.getGoal() );
 
+        if ( mojoDescriptor.isAggregator() )
+        {
+            response.setExecutedMultipleProjects( true );
+
+            for ( Iterator i = session.getSortedProjects().iterator(); i.hasNext(); )
+            {
+                MavenProject reactorProject = (MavenProject) i.next();
+
+                line();
+
+                getLogger().info( "Building " + reactorProject.getName() );
+
+                line();
+
+                forkProjectLifecycle( mojoDescriptor, session, reactorProject, response );
+            }
+        }
+        else
+        {
+            forkProjectLifecycle( mojoDescriptor, session, project, response );
+        }
+    }
+
+    private void forkProjectLifecycle( MojoDescriptor mojoDescriptor, MavenSession session, MavenProject project,
+                                       MavenExecutionResponse response )
+        throws ArtifactResolutionException, LifecycleExecutionException, MojoExecutionException, MojoFailureException
+    {
+        PluginDescriptor pluginDescriptor = mojoDescriptor.getPluginDescriptor();
+
         String targetPhase = mojoDescriptor.getExecutePhase();
 
         Map lifecycleMappings = null;
@@ -754,13 +789,13 @@
         MavenProject executionProject = new MavenProject( project );
         if ( targetPhase != null )
         {
-            executeGoalWithLifecycle( targetPhase, session, lifecycleMappings, executionProject );
+            executeGoalWithLifecycle( targetPhase, session, lifecycleMappings, executionProject, response );
         }
         else
         {
             String goal = mojoDescriptor.getExecuteGoal();
             MojoDescriptor desc = getMojoDescriptor( pluginDescriptor, goal );
-            executeGoals( Collections.singletonList( new MojoExecution( desc ) ), session, executionProject );
+            executeGoals( Collections.singletonList( new MojoExecution( desc ) ), session, executionProject, response );
         }
         project.setExecutionProject( executionProject );
     }



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