You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2008/02/27 02:26:44 UTC
svn commit: r631455 - in /maven/components/trunk:
maven-core/src/main/java/org/apache/maven/
maven-core/src/main/java/org/apache/maven/errors/
maven-core/src/main/java/org/apache/maven/lifecycle/
maven-core/src/main/java/org/apache/maven/lifecycle/plan...
Author: jdcasey
Date: Tue Feb 26 17:26:41 2008
New Revision: 631455
URL: http://svn.apache.org/viewvc?rev=631455&view=rev
Log:
Improve phase-tracking, event dispatching, and align build headers as events dispatched to the default event monitor...also, add debug-level enter/exit phase output in the default event monitor. Finally, refactored code that actually renders the build plan and executes the mojos for each task-segment in the lifecycle executor, to eliminate all the duplication.
This lays the ground work for improving cache management, since I also added event types for embedder control (keep in mind that event monitors can be used to control when the project/model cache is flushed, for example).
Added:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/monitor/event/DeprecationEventDispatcher.java (with props)
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultArtifactFilterManager.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/errors/CoreReporterManager.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/BuildPlan.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/BuildPlanUtils.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/monitor/event/DefaultEventMonitor.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/monitor/event/MavenEvents.java
maven/components/trunk/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleUtils.java
maven/components/trunk/maven-lifecycle/src/main/mdo/maven-lifecycle.mdo
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectReporterManager.java
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultArtifactFilterManager.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultArtifactFilterManager.java?rev=631455&r1=631454&r2=631455&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultArtifactFilterManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultArtifactFilterManager.java Tue Feb 26 17:26:41 2008
@@ -45,7 +45,6 @@
artifacts.add( "jsch" );
artifacts.add( "maven-artifact" );
artifacts.add( "maven-artifact-manager" );
- artifacts.add( "maven-build-context" );
artifacts.add( "maven-core" );
artifacts.add( "maven-error-diagnoser" );
artifacts.add( "maven-lifecycle" );
@@ -59,7 +58,7 @@
artifacts.add( "maven-reporting-api" );
artifacts.add( "maven-repository-metadata" );
artifacts.add( "maven-settings" );
- //adding shared/maven-toolchain project here, even though not part of the default
+ //adding shared/maven-toolchain project here, even though not part of the default
//distro yet.
artifacts.add( "maven-toolchain" );
artifacts.add( "plexus-component-api" );
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=631455&r1=631454&r2=631455&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 Tue Feb 26 17:26:41 2008
@@ -33,7 +33,7 @@
import org.apache.maven.lifecycle.LifecycleExecutionException;
import org.apache.maven.lifecycle.LifecycleExecutor;
import org.apache.maven.lifecycle.TaskValidationResult;
-import org.apache.maven.monitor.event.DefaultEventDispatcher;
+import org.apache.maven.monitor.event.DeprecationEventDispatcher;
import org.apache.maven.monitor.event.EventDispatcher;
import org.apache.maven.monitor.event.MavenEvents;
import org.apache.maven.profiles.ProfileManager;
@@ -168,9 +168,9 @@
return result;
}
- EventDispatcher dispatcher = new DefaultEventDispatcher( request.getEventMonitors() );
+ EventDispatcher dispatcher = new DeprecationEventDispatcher( MavenEvents.DEPRECATIONS, request.getEventMonitors() );
- String event = MavenEvents.REACTOR_EXECUTION;
+ String event = MavenEvents.MAVEN_EXECUTION;
dispatcher.dispatchStart(
event,
@@ -197,7 +197,9 @@
if ( !tvr.isTaskValid() )
{
- result.addException( tvr.generateInvalidTaskException() );
+ Exception e = tvr.generateInvalidTaskException();
+ result.addException( e );
+ dispatcher.dispatchError( event, request.getBaseDirectory(), e );
return result;
}
@@ -228,11 +230,15 @@
catch ( LifecycleExecutionException e )
{
result.addException( e );
+ dispatcher.dispatchError( event, request.getBaseDirectory(), e );
+
return result;
}
catch ( BuildFailureException e )
{
result.addException( e );
+ dispatcher.dispatchError( event, request.getBaseDirectory(), e );
+
return result;
}
@@ -241,6 +247,8 @@
result.setProject( reactorManager.getTopLevelProject() );
result.setBuildPlans( session.getBuildPlans() );
+
+ dispatcher.dispatchEnd( event, request.getBaseDirectory() );
return result;
}
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/errors/CoreReporterManager.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/errors/CoreReporterManager.java?rev=631455&r1=631454&r2=631455&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/errors/CoreReporterManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/errors/CoreReporterManager.java Tue Feb 26 17:26:41 2008
@@ -5,6 +5,7 @@
public final class CoreReporterManager
{
+ // FIXME: This is not threadsafe!!
private static CoreErrorReporter reporter;
private CoreReporterManager()
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=631455&r1=631454&r2=631455&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 Tue Feb 26 17:26:41 2008
@@ -177,208 +177,162 @@
if ( segment.aggregate() )
{
- if ( !reactorManager.isBlackListed( rootProject ) )
- {
- line();
-
- getLogger().info( "Building " + rootProject.getName() );
-
- getLogger().info( " " + segment );
+ executeTaskSegmentsForProject( segment, rootProject, reactorManager, dispatcher, session );
+ }
+ else
+ {
+ List sortedProjects = session.getSortedProjects();
- line();
+ // iterate over projects, and execute on each...
+ for ( Iterator projectIterator = sortedProjects.iterator(); projectIterator.hasNext(); )
+ {
+ MavenProject currentProject = (MavenProject) projectIterator.next();
- String target = rootProject.getId() + " ( " + segment + " )";
+ executeTaskSegmentsForProject( segment, currentProject, reactorManager, dispatcher, session );
+ }
+ }
+ }
+ }
- getLogger().debug( "Constructing build plan for " + target );
+ private void executeTaskSegmentsForProject( TaskSegment segment,
+ MavenProject project,
+ ReactorManager reactorManager,
+ EventDispatcher dispatcher,
+ MavenSession session )
+ throws LifecycleExecutionException, BuildFailureException
+ {
+ if ( !reactorManager.isBlackListed( project ) )
+ {
+// line();
+//
+// getLogger().info( "Building " + project.getName() );
+//
+// getLogger().info( " " + segment );
+//
+// line();
- // !! This is ripe for refactoring to an aspect.
- // Event monitoring.
- String event = MavenEvents.PROJECT_EXECUTION;
+ String target = project.getName() + "\nId: " + project.getId() + "\n" + segment;
- long buildStartTime = System.currentTimeMillis();
+ getLogger().debug( "Constructing build plan for " + target );
- dispatcher.dispatchStart(
- event,
- target );
+ // !! This is ripe for refactoring to an aspect.
+ // Event monitoring.
+ String event = MavenEvents.PROJECT_EXECUTION;
- ClassRealm oldLookupRealm = setProjectLookupRealm( session, rootProject );
+ long buildStartTime = System.currentTimeMillis();
- try
- {
- session.setCurrentProject( rootProject );
+ dispatcher.dispatchStart(
+ event,
+ target );
- // NEW: Build up the execution plan, including configuration.
- List mojoBindings = getLifecycleBindings(
- segment.getTasks(),
- rootProject,
- session,
- target );
+ ClassRealm oldLookupRealm = setProjectLookupRealm( session, project );
- // NEW: Then, iterate over each binding in that plan, and execute the associated mojo.
- // only call once, with the top-level project (assumed to be provided as a parameter)...
- for ( Iterator mojoIterator = mojoBindings.iterator(); mojoIterator.hasNext(); )
- {
- MojoBinding binding = (MojoBinding) mojoIterator.next();
+ try
+ {
+ session.setCurrentProject( project );
- try
- {
- executeGoalAndHandleFailures(
- binding,
- session,
- dispatcher,
- event,
- reactorManager,
- buildStartTime,
- target,
- true );
- }
- catch ( MojoFailureException e )
- {
- AggregatedBuildFailureException error = new AggregatedBuildFailureException(
- session.getExecutionRootDirectory(),
- binding,
- e );
-
- dispatcher.dispatchError( event, target, error );
-
- if ( handleExecutionFailure( reactorManager, rootProject, error, binding, buildStartTime ) )
- {
- throw error;
- }
- }
- }
- }
- finally
- {
- session.setCurrentProject( null );
- restoreLookupRealm( oldLookupRealm );
- }
+ // NEW: Build up the execution plan, including configuration.
+ List mojoBindings = getLifecycleBindings(
+ segment.getTasks(),
+ project,
+ session,
+ target );
+ String currentPhase = null;
- reactorManager.registerBuildSuccess(
- rootProject,
- System.currentTimeMillis() - buildStartTime );
-
- dispatcher.dispatchEnd(
- event,
- target );
- }
- else
+ // NEW: Then, iterate over each binding in that plan, and execute the associated mojo.
+ // only call once, with the top-level project (assumed to be provided as a parameter)...
+ for ( Iterator mojoIterator = mojoBindings.iterator(); mojoIterator.hasNext(); )
{
- line();
+ MojoBinding binding = (MojoBinding) mojoIterator.next();
- getLogger().info( "SKIPPING " + rootProject.getName() );
+ String phase = binding.getPhase() == null ? null : binding.getPhase().getName();
- getLogger().info( " " + segment );
-
- getLogger().info( "This project has been banned from further executions due to previous failures." );
-
- line();
- }
- }
- else
- {
- List sortedProjects = session.getSortedProjects();
-
- // iterate over projects, and execute on each...
- for ( Iterator projectIterator = sortedProjects.iterator(); projectIterator.hasNext(); )
- {
- MavenProject currentProject = (MavenProject) projectIterator.next();
-
- if ( !reactorManager.isBlackListed( currentProject ) )
+ if ( ( currentPhase != null ) && !currentPhase.equals( phase ) )
{
- line();
-
- getLogger().info( "Building " + currentProject.getName() );
-
- getLogger().info( " " + segment );
-
- line();
-
- String target = currentProject.getId() + " ( " + segment + " )";
-
- // !! This is ripe for refactoring to an aspect.
- // Event monitoring.
- String event = MavenEvents.PROJECT_EXECUTION;
+ dispatcher.dispatchEnd( MavenEvents.PHASE_EXECUTION, currentPhase );
+ currentPhase = null;
+ }
- long buildStartTime = System.currentTimeMillis();
+ if ( ( currentPhase == null ) && ( phase != null ) )
+ {
+ currentPhase = phase;
+ dispatcher.dispatchStart( MavenEvents.PHASE_EXECUTION, currentPhase );
+ }
- dispatcher.dispatchStart(
+ try
+ {
+ executeGoalAndHandleFailures(
+ binding,
+ session,
+ dispatcher,
event,
- target );
-
- ClassRealm oldLookupRealm = setProjectLookupRealm( session, currentProject );
-
- try
+ reactorManager,
+ buildStartTime,
+ target,
+ segment.aggregate() );
+ }
+ catch ( MojoFailureException e )
+ {
+ if ( segment.aggregate() )
{
- session.setCurrentProject( currentProject );
-
- List mojoBindings = getLifecycleBindings(
- segment.getTasks(),
- currentProject,
- session,
- target );
-
- for ( Iterator mojoIterator = mojoBindings.iterator(); mojoIterator.hasNext(); )
- {
- MojoBinding binding = (MojoBinding) mojoIterator.next();
-
- getLogger().debug(
- "Mojo: " + binding.getGoal() + " has config:\n"
- + binding.getConfiguration() );
-
- try
- {
- executeGoalAndHandleFailures( binding, session, dispatcher,
- event, reactorManager,
- buildStartTime, target,
- false);
- }
- catch ( MojoFailureException e )
- {
- ProjectBuildFailureException error = new ProjectBuildFailureException(
- currentProject.getId(),
- binding,
- e );
-
- dispatcher.dispatchError( event, target, error );
-
- if ( handleExecutionFailure( reactorManager, currentProject, error, binding, buildStartTime ) )
- {
- throw error;
- }
- }
- }
+ AggregatedBuildFailureException error = new AggregatedBuildFailureException(
+ session.getExecutionRootDirectory(),
+ binding,
+ e );
+
+ dispatcher.dispatchError( event, target, error );
+
+ if ( handleExecutionFailure( reactorManager, project, error, binding, buildStartTime ) )
+ {
+ throw error;
+ }
}
- finally
+ else
{
- session.setCurrentProject( null );
- restoreLookupRealm( oldLookupRealm );
+ ProjectBuildFailureException error = new ProjectBuildFailureException(
+ project.getId(),
+ binding,
+ e );
+
+ dispatcher.dispatchError( event, target, error );
+
+ if ( handleExecutionFailure( reactorManager, project, error, binding, buildStartTime ) )
+ {
+ throw error;
+ }
}
+ }
+ }
- reactorManager.registerBuildSuccess(
- currentProject,
- System.currentTimeMillis() - buildStartTime );
+ dispatcher.dispatchEnd( MavenEvents.PHASE_EXECUTION, currentPhase );
+ }
+ finally
+ {
+ session.setCurrentProject( null );
+ restoreLookupRealm( oldLookupRealm );
+ }
- dispatcher.dispatchEnd(
- event,
- target );
- }
- else
- {
- line();
- getLogger().info( "SKIPPING " + currentProject.getName() );
+ reactorManager.registerBuildSuccess(
+ project,
+ System.currentTimeMillis() - buildStartTime );
- getLogger().info( " " + segment );
+ dispatcher.dispatchEnd(
+ event,
+ target );
+ }
+ else
+ {
+ line();
- getLogger().info(
- "This project has been banned from further executions due to previous failures." );
+ getLogger().info( "SKIPPING " + project.getName() );
- line();
- }
- }
- }
+ getLogger().info( " " + segment );
+
+ getLogger().info( "This project has been banned from further executions due to previous failures." );
+
+ line();
}
}
@@ -939,7 +893,7 @@
{
StringBuffer message = new StringBuffer();
- message.append( " task-segment: [" );
+ message.append( "task-segment: [" );
for ( Iterator it = tasks.iterator(); it.hasNext(); )
{
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/BuildPlan.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/BuildPlan.java?rev=631455&r1=631454&r2=631455&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/BuildPlan.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/BuildPlan.java Tue Feb 26 17:26:41 2008
@@ -192,6 +192,8 @@
public List renderExecutionPlan( final Stack executionStack )
throws NoSuchPhaseException
{
+ LifecycleUtils.setupTrackingInfo( bindings );
+
List plan = new ArrayList();
for ( Iterator it = tasks.iterator(); it.hasNext(); )
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/BuildPlanUtils.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/BuildPlanUtils.java?rev=631455&r1=631454&r2=631455&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/BuildPlanUtils.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/BuildPlanUtils.java Tue Feb 26 17:26:41 2008
@@ -127,7 +127,18 @@
StringBuffer listing = new StringBuffer();
listing.append( MojoBindingUtils.toString( binding ) );
- listing.append( " [executionId: " ).append( binding.getExecutionId() ).append( "]" );
+ listing.append( " [executionId: " ).append( binding.getExecutionId() ).append( ", phase: " );
+
+ if ( ( binding.getPhase() != null ) && ( binding.getPhase().getName() != null ) )
+ {
+ listing.append( binding.getPhase().getName() );
+ }
+ else
+ {
+ listing.append( "None specified" );
+ }
+
+ listing.append( "]" );
if ( extendedInfo )
{
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/monitor/event/DefaultEventMonitor.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/monitor/event/DefaultEventMonitor.java?rev=631455&r1=631454&r2=631455&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/monitor/event/DefaultEventMonitor.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/monitor/event/DefaultEventMonitor.java Tue Feb 26 17:26:41 2008
@@ -28,20 +28,66 @@
extends AbstractSelectiveEventMonitor
{
- private static final String[] START_EVENTS = {MavenEvents.MOJO_EXECUTION};
+ private static final String[] START_EVENTS = {
+ MavenEvents.PROJECT_EXECUTION,
+ MavenEvents.PHASE_EXECUTION,
+ MavenEvents.MOJO_EXECUTION
+ };
+
+ private static final String[] END_EVENTS = {
+ MavenEvents.PHASE_EXECUTION
+ };
private final Logger logger;
public DefaultEventMonitor( Logger logger )
{
- super( START_EVENTS, MavenEvents.NO_EVENTS, MavenEvents.NO_EVENTS );
+ super( START_EVENTS, END_EVENTS, MavenEvents.NO_EVENTS );
this.logger = logger;
}
protected void doStartEvent( String event, String target, long time )
{
- logger.info( "[" + target + "]" );
+ if ( MavenEvents.MOJO_EXECUTION.equals( event ) )
+ {
+ logger.info( "[" + target + "]" );
+ }
+ else if ( MavenEvents.PHASE_EXECUTION.equals( event ) )
+ {
+ logger.debug( line() );
+ logger.debug( "Entering lifecycle phase: " + target );
+ logger.debug( line() );
+ }
+ else if ( MavenEvents.PROJECT_EXECUTION.equals( event ) )
+ {
+ logger.info( line() );
+ String[] targetParts = target.split( "\n" );
+ logger.info( "Building " + targetParts[0] );
+ if ( targetParts.length > 0 )
+ {
+ logger.info( "" );
+ for ( int i = 1; i < targetParts.length; i++ )
+ {
+ logger.info( targetParts[i] );
+ }
+ }
+ logger.info( line() );
+ }
+ }
+
+ protected void doEndEvent( String event,
+ String target,
+ long timestamp )
+ {
+ logger.debug( line() );
+ logger.debug( "Completed lifecycle phase: " + target );
+ logger.debug( line() );
+ }
+
+ private String line()
+ {
+ return "------------------------------------------------------------------------";
}
}
Added: maven/components/trunk/maven-core/src/main/java/org/apache/maven/monitor/event/DeprecationEventDispatcher.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/monitor/event/DeprecationEventDispatcher.java?rev=631455&view=auto
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/monitor/event/DeprecationEventDispatcher.java (added)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/monitor/event/DeprecationEventDispatcher.java Tue Feb 26 17:26:41 2008
@@ -0,0 +1,54 @@
+package org.apache.maven.monitor.event;
+
+import java.util.List;
+import java.util.Map;
+
+public class DeprecationEventDispatcher
+ extends DefaultEventDispatcher
+{
+
+ private final Map deprecatedEventsByReplacement;
+
+ public DeprecationEventDispatcher( Map deprecatedEventsByReplacement )
+ {
+ this.deprecatedEventsByReplacement = deprecatedEventsByReplacement;
+ }
+
+ public DeprecationEventDispatcher( Map deprecatedEventsByReplacement, List eventMonitors )
+ {
+ super( eventMonitors );
+ this.deprecatedEventsByReplacement = deprecatedEventsByReplacement;
+ }
+
+ public void dispatchEnd( String event,
+ String target )
+ {
+ super.dispatchEnd( event, target );
+ if ( deprecatedEventsByReplacement.containsKey( event ) )
+ {
+ super.dispatchEnd( (String) deprecatedEventsByReplacement.get( event ), target );
+ }
+ }
+
+ public void dispatchError( String event,
+ String target,
+ Throwable cause )
+ {
+ super.dispatchError( event, target, cause );
+ if ( deprecatedEventsByReplacement.containsKey( event ) )
+ {
+ super.dispatchError( (String) deprecatedEventsByReplacement.get( event ), target, cause );
+ }
+ }
+
+ public void dispatchStart( String event,
+ String target )
+ {
+ super.dispatchStart( event, target );
+ if ( deprecatedEventsByReplacement.containsKey( event ) )
+ {
+ super.dispatchStart( (String) deprecatedEventsByReplacement.get( event ), target );
+ }
+ }
+
+}
Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/monitor/event/DeprecationEventDispatcher.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/monitor/event/DeprecationEventDispatcher.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/monitor/event/MavenEvents.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/monitor/event/MavenEvents.java?rev=631455&r1=631454&r2=631455&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/monitor/event/MavenEvents.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/monitor/event/MavenEvents.java Tue Feb 26 17:26:41 2008
@@ -1,5 +1,8 @@
package org.apache.maven.monitor.event;
+import java.util.HashMap;
+import java.util.Map;
+
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -28,17 +31,37 @@
public static final String PHASE_EXECUTION = "phase-execute";
public static final String MOJO_EXECUTION = "mojo-execute";
public static final String PROJECT_EXECUTION = "project-execute";
+
+ /** @deprecated Use {@link MavenEvents#MAVEN_EXECUTION} instead. */
public static final String REACTOR_EXECUTION = "reactor-execute";
-
+ public static final String MAVEN_EXECUTION = "maven-execute";
+
+ public static final String EMBEDDER_LIFECYCLE = "embedder-lifecycle";
+ public static final String EMBEDDER_METHOD = "embedder-method";
+
+ public static final Map DEPRECATIONS;
+
+ static
+ {
+ Map dep = new HashMap();
+
+ dep.put( MAVEN_EXECUTION, REACTOR_EXECUTION );
+
+ DEPRECATIONS = dep;
+ }
+
public static final String[] ALL_EVENTS = {
PHASE_EXECUTION,
MOJO_EXECUTION,
PROJECT_EXECUTION,
- REACTOR_EXECUTION
+ REACTOR_EXECUTION,
+ MAVEN_EXECUTION,
+ EMBEDDER_LIFECYCLE,
+ EMBEDDER_METHOD
};
-
+
public static final String[] NO_EVENTS = {};
-
+
private MavenEvents()
{
}
Modified: maven/components/trunk/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleUtils.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleUtils.java?rev=631455&r1=631454&r2=631455&view=diff
==============================================================================
--- maven/components/trunk/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleUtils.java (original)
+++ maven/components/trunk/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleUtils.java Tue Feb 26 17:26:41 2008
@@ -12,14 +12,43 @@
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
public class LifecycleUtils
{
private LifecycleUtils()
{
+ }
+
+ public static void setupTrackingInfo( final LifecycleBindings bindings )
+ {
+ for ( Iterator bindingIt = bindings.getBindingList().iterator(); bindingIt.hasNext(); )
+ {
+ LifecycleBinding binding = (LifecycleBinding) bindingIt.next();
+
+ if ( binding == null )
+ {
+ continue;
+ }
+
+ LinkedHashMap phaseMap = binding.getOrderedPhaseMapping();
+ for ( Iterator phaseIt = phaseMap.entrySet().iterator(); phaseIt.hasNext(); )
+ {
+ Map.Entry entry = (Entry) phaseIt.next();
+ Phase phase = (Phase) entry.getValue();
+
+ String phaseName = (String) entry.getKey();
+
+ if ( phase != null )
+ {
+ phase.setLifecycleInfo( phaseName, binding );
+ }
+ }
+ }
}
public static void setOrigin( final LifecycleBindings bindings, final String origin )
Modified: maven/components/trunk/maven-lifecycle/src/main/mdo/maven-lifecycle.mdo
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-lifecycle/src/main/mdo/maven-lifecycle.mdo?rev=631455&r1=631454&r2=631455&view=diff
==============================================================================
--- maven/components/trunk/maven-lifecycle/src/main/mdo/maven-lifecycle.mdo (original)
+++ maven/components/trunk/maven-lifecycle/src/main/mdo/maven-lifecycle.mdo Tue Feb 26 17:26:41 2008
@@ -116,6 +116,11 @@
throw new UnsupportedOperationException( "Unsupported in base-class." );
}
+ public java.util.LinkedHashMap getOrderedPhaseMapping()
+ {
+ throw new UnsupportedOperationException( "Unsupported in base-class." );
+ }
+
public java.util.List getPhasesInOrder()
{
throw new UnsupportedOperationException( "Unsupported in base-class." );
@@ -168,26 +173,24 @@
return "clean";
}
- public java.util.List getPhasesInOrder()
+ public java.util.LinkedHashMap getOrderedPhaseMapping()
{
- java.util.List phases = new java.util.ArrayList();
-
- phases.add( getPreClean() );
- phases.add( getClean() );
- phases.add( getPostClean() );
+ java.util.LinkedHashMap phases = new java.util.LinkedHashMap();
+ phases.put( "pre-clean", getPreClean() );
+ phases.put( "clean", getClean() );
+ phases.put( "post-clean", getPostClean() );
- return java.util.Collections.unmodifiableList( phases );
+ return phases;
+ }
+
+ public java.util.List getPhasesInOrder()
+ {
+ return new java.util.ArrayList( getOrderedPhaseMapping().values() );
}
public java.util.List getPhaseNamesInOrder()
{
- java.util.List phases = new java.util.ArrayList();
-
- phases.add( "pre-clean" );
- phases.add( "clean" );
- phases.add( "post-clean" );
-
- return java.util.Collections.unmodifiableList( phases );
+ return new java.util.ArrayList( getOrderedPhaseMapping().keySet() );
}
]]></code>
</codeSegment>
@@ -392,66 +395,44 @@
return "build";
}
- public java.util.List getPhasesInOrder()
+ public java.util.LinkedHashMap getOrderedPhaseMapping()
{
- java.util.List phases = new java.util.ArrayList();
-
- phases.add( getValidate() );
- phases.add( getInitialize() );
- phases.add( getGenerateSources() );
- phases.add( getProcessSources() );
- phases.add( getGenerateResources() );
- phases.add( getProcessResources() );
- phases.add( getCompile() );
- phases.add( getProcessClasses() );
- phases.add( getGenerateTestSources() );
- phases.add( getProcessTestSources() );
- phases.add( getGenerateTestResources() );
- phases.add( getProcessTestResources() );
- phases.add( getTestCompile() );
- phases.add( getProcessTestClasses() );
- phases.add( getTest() );
- phases.add( getPreparePackage() );
- phases.add( getCreatePackage() );
- phases.add( getPreIntegrationTest() );
- phases.add( getIntegrationTest() );
- phases.add( getPostIntegrationTest() );
- phases.add( getVerify() );
- phases.add( getInstall() );
- phases.add( getDeploy() );
+ java.util.LinkedHashMap phases = new java.util.LinkedHashMap();
+ phases.put( "validate", getValidate() );
+ phases.put( "initialize", getInitialize() );
+ phases.put( "generate-sources", getGenerateSources() );
+ phases.put( "process-sources", getProcessSources() );
+ phases.put( "generate-resources", getGenerateResources() );
+ phases.put( "process-resources", getProcessResources() );
+ phases.put( "compile", getCompile() );
+ phases.put( "process-classes", getProcessClasses() );
+ phases.put( "generate-test-sources", getGenerateTestSources() );
+ phases.put( "process-test-sources", getProcessTestSources() );
+ phases.put( "generate-test-resources", getGenerateTestResources() );
+ phases.put( "process-test-resources", getProcessTestResources() );
+ phases.put( "test-compile", getTestCompile() );
+ phases.put( "process-test-classes", getProcessTestClasses() );
+ phases.put( "test", getTest() );
+ phases.put( "prepare-package", getPreparePackage() );
+ phases.put( "package", getCreatePackage() );
+ phases.put( "pre-integration-test", getPreIntegrationTest() );
+ phases.put( "integration-test", getIntegrationTest() );
+ phases.put( "post-integration-test", getPostIntegrationTest() );
+ phases.put( "verify", getVerify() );
+ phases.put( "install", getInstall() );
+ phases.put( "deploy", getDeploy() );
- return java.util.Collections.unmodifiableList( phases );
+ return phases;
+ }
+
+ public java.util.List getPhasesInOrder()
+ {
+ return new java.util.ArrayList( getOrderedPhaseMapping().values() );
}
public java.util.List getPhaseNamesInOrder()
{
- java.util.List phases = new java.util.ArrayList();
-
- phases.add( "validate" );
- phases.add( "initialize" );
- phases.add( "generate-sources" );
- phases.add( "process-sources" );
- phases.add( "generate-resources" );
- phases.add( "process-resources" );
- phases.add( "compile" );
- phases.add( "process-classes" );
- phases.add( "generate-test-sources" );
- phases.add( "process-test-sources" );
- phases.add( "generate-test-resources" );
- phases.add( "process-test-resources" );
- phases.add( "test-compile" );
- phases.add( "process-test-classes" );
- phases.add( "test" );
- phases.add( "prepare-package" );
- phases.add( "package" );
- phases.add( "pre-integration-test" );
- phases.add( "integration-test" );
- phases.add( "post-integration-test" );
- phases.add( "verify" );
- phases.add( "install" );
- phases.add( "deploy" );
-
- return java.util.Collections.unmodifiableList( phases );
+ return new java.util.ArrayList( getOrderedPhaseMapping().keySet() );
}
]]></code>
</codeSegment>
@@ -503,29 +484,26 @@
{
return "site";
}
-
- public java.util.List getPhasesInOrder()
+
+ public java.util.LinkedHashMap getOrderedPhaseMapping()
{
- java.util.List phases = new java.util.ArrayList();
-
- phases.add( getPreSite() );
- phases.add( getSite() );
- phases.add( getPostSite() );
- phases.add( getSiteDeploy() );
+ java.util.LinkedHashMap map = new java.util.LinkedHashMap();
+ map.put( "pre-site", getPreSite() );
+ map.put( "site", getSite() );
+ map.put( "post-site", getPostSite() );
+ map.put( "site-deploy", getSiteDeploy() );
- return java.util.Collections.unmodifiableList( phases );
+ return map;
+ }
+
+ public java.util.List getPhasesInOrder()
+ {
+ return new java.util.ArrayList( getOrderedPhaseMapping().values() );
}
public java.util.List getPhaseNamesInOrder()
{
- java.util.List phases = new java.util.ArrayList();
-
- phases.add( "pre-site" );
- phases.add( "site" );
- phases.add( "post-site" );
- phases.add( "site-deploy" );
-
- return java.util.Collections.unmodifiableList( phases );
+ return new java.util.ArrayList( getOrderedPhaseMapping().keySet() );
}
]]></code>
</codeSegment>
@@ -546,6 +524,50 @@
</association>
</field>
</fields>
+ <codeSegments>
+ <codeSegment>
+ <version>1.0.0</version>
+ <code><![CDATA[
+ private String name;
+ private LifecycleBinding lifecycleBinding;
+
+ /**
+ * Get the name of this phase.
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * Get the LifecycleBinding instance to which this Phase belongs.
+ */
+ public LifecycleBinding getLifecycleBinding()
+ {
+ return lifecycleBinding;
+ }
+
+ /**
+ * Set the name of this phase, and the Lifecycle instance to which is belongs.
+ */
+ public void setLifecycleInfo( String phaseName, LifecycleBinding lifecycleBinding )
+ {
+ this.name = phaseName;
+ this.lifecycleBinding = lifecycleBinding;
+
+ java.util.List bindings = getBindings();
+ if ( bindings != null )
+ {
+ for( java.util.Iterator it = bindings.iterator(); it.hasNext(); )
+ {
+ MojoBinding binding = (MojoBinding) it.next();
+ binding.setLifecycleInfo( this );
+ }
+ }
+ }
+ ]]></code>
+ </codeSegment>
+ </codeSegments>
</class>
<class>
<name>MojoBinding</name>
@@ -673,6 +695,26 @@
public void setLateBound( boolean lateBound )
{
this.lateBound = lateBound;
+ }
+
+ private Phase phase;
+
+ /**
+ * Get the Phase instance to which this MojoBinding is bound. NOTE: In
+ * some cases, the phase name may not be known, or may not exist (as in the
+ * case of a direct mojo invocation from the command line or embedder).
+ */
+ public Phase getPhase()
+ {
+ return phase;
+ }
+
+ /**
+ * Set the Phase instance to which this MojoBinding is bound.
+ */
+ public void setLifecycleInfo( Phase phase )
+ {
+ this.phase = phase;
}
]]></code>
</codeSegment>
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectReporterManager.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectReporterManager.java?rev=631455&r1=631454&r2=631455&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectReporterManager.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectReporterManager.java Tue Feb 26 17:26:41 2008
@@ -3,6 +3,7 @@
public final class ProjectReporterManager
{
+ // FIXME: This is not threadsafe!
private static ProjectErrorReporter reporter;
private ProjectReporterManager()