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 2007/03/27 23:24:41 UTC
svn commit: r523087 - in
/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan:
DefaultBuildPlanner.java SimpleDirectInvocationModifier.java
Author: jdcasey
Date: Tue Mar 27 14:24:41 2007
New Revision: 523087
URL: http://svn.apache.org/viewvc?view=rev&rev=523087
Log:
Fixing the case for site:run where a direct mojo invocation needs reports.
Added:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/SimpleDirectInvocationModifier.java (with props)
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultBuildPlanner.java
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultBuildPlanner.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultBuildPlanner.java?view=diff&rev=523087&r1=523086&r2=523087
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultBuildPlanner.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultBuildPlanner.java Tue Mar 27 14:24:41 2007
@@ -8,6 +8,7 @@
import org.apache.maven.lifecycle.binding.MojoBindingFactory;
import org.apache.maven.lifecycle.model.LifecycleBindings;
import org.apache.maven.lifecycle.model.MojoBinding;
+import org.apache.maven.lifecycle.model.Phase;
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.plugin.loader.PluginLoader;
@@ -150,9 +151,29 @@
{
List reportBindings = lifecycleBindingManager.getReportBindings( project );
- BuildPlanModifier modder = new ReportingPlanModifier( mojoBinding, reportBindings );
+ Phase phase = LifecycleUtils.findPhaseForMojoBinding( mojoBinding, lifecycleBindings, true );
+
+ if ( phase == null )
+ {
+ if ( planElement instanceof DirectInvocationOriginElement )
+ {
+ DirectInvocationModifier modder = new SimpleDirectInvocationModifier( mojoBinding, reportBindings );
+
+ ((DirectInvocationOriginElement) planElement).addDirectInvocationModifier( modder );
+ }
+ else
+ {
+ throw new LifecyclePlannerException( "Cannot inject reports for direct invocation: "
+ + MojoBindingUtils.toString( mojoBinding )
+ + "; current plan element does not accept direct-invocation modifiers." );
+ }
+ }
+ else
+ {
+ BuildPlanModifier modder = new ReportingPlanModifier( mojoBinding, reportBindings );
- planElement.addModifier( modder );
+ planElement.addModifier( modder );
+ }
// NOTE: the first sighting of a mojo requiring reports should satisfy this condition.
// therefore, we can break out as soon as we find one.
Added: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/SimpleDirectInvocationModifier.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/SimpleDirectInvocationModifier.java?view=auto&rev=523087
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/SimpleDirectInvocationModifier.java (added)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/SimpleDirectInvocationModifier.java Tue Mar 27 14:24:41 2007
@@ -0,0 +1,52 @@
+package org.apache.maven.lifecycle.plan;
+
+import org.apache.maven.lifecycle.binding.LifecycleBindingManager;
+import org.apache.maven.lifecycle.model.MojoBinding;
+import org.apache.maven.project.MavenProject;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Inject a list of MojoBindings in place of the forking binding, bracketing the forked bindings with
+ * special mojos to control the forked-execution context.
+ *
+ * @author jdcasey
+ *
+ */
+public class SimpleDirectInvocationModifier
+ implements DirectInvocationModifier
+{
+
+ private final List reportBindings;
+ private final MojoBinding targetBinding;
+
+ public SimpleDirectInvocationModifier( MojoBinding targetBinding, List reportBindings )
+ {
+ this.targetBinding = targetBinding;
+ this.reportBindings = reportBindings;
+ }
+
+ /**
+ * Return a list containing forked-execution context control MojoBindings, the forked-execution
+ * bindings themselves, and finally the binding that forked off a new execution branch.
+ */
+ public List getModifiedBindings( MavenProject project, LifecycleBindingManager bindingManager )
+ {
+ List result = new ArrayList();
+
+ result.addAll( reportBindings );
+ result.add( targetBinding );
+
+ return result;
+ }
+
+ /**
+ * Return the MojoBinding that forks execution to include the bindings in this modifier.
+ */
+ public MojoBinding getBindingToModify()
+ {
+ return targetBinding;
+ }
+
+}
Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/SimpleDirectInvocationModifier.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/SimpleDirectInvocationModifier.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"