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/04/27 03:16:07 UTC

svn commit: r164930 - /maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle /maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin /maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor /maven/components/trunk/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator /maven/components/trunk/maven-plugin-tools/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java /maven/components/trunk/maven-plugins/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea

Author: brett
Date: Tue Apr 26 18:16:06 2005
New Revision: 164930

URL: http://svn.apache.org/viewcvs?rev=164930&view=rev
Log:
PR: MNG-167
Add the ability for a mojo to "fork" a phase execution, in a separate iteration of the lifecycle.
Add @executePhase generate-sources to idea:idea

Modified:
    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/plugin/DefaultPluginManager.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
    maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java
    maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java
    maven/components/trunk/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java
    maven/components/trunk/maven-plugin-tools/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java
    maven/components/trunk/maven-plugins/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/IdeaMojo.java

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=164930&r1=164929&r2=164930&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 Apr 26 18:16:06 2005
@@ -45,8 +45,10 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Collections;
 
 /**
+ * @todo there is some duplication between this and the plugin manager
  * @author <a href="mailto:jason@maven.org">Jason van Zyl </a>
  * @version $Id: DefaultLifecycleExecutor.java,v 1.16 2005/03/04 09:04:25
  *          jdcasey Exp $
@@ -404,7 +406,8 @@
     }
 
     private void executePhase( String phase, MavenSession session, Map phaseMap )
-        throws PluginExecutionException, PluginNotFoundException, PluginManagerException, ArtifactResolutionException
+        throws PluginExecutionException, PluginNotFoundException, PluginManagerException, ArtifactResolutionException,
+        LifecycleExecutionException
     {
         // only execute up to the given phase
         int index = phases.indexOf( phaseMap.get( phase ) );
@@ -455,7 +458,8 @@
     }
 
     protected void executeMojo( String id, MavenSession session )
-        throws PluginExecutionException, PluginNotFoundException, PluginManagerException, ArtifactResolutionException
+        throws PluginExecutionException, PluginNotFoundException, PluginManagerException, ArtifactResolutionException,
+        LifecycleExecutionException
     {
         // ----------------------------------------------------------------------
         // We have something of the form <pluginId>:<mojoId>, so this might be
@@ -471,7 +475,22 @@
         logger.debug( "\t{localRepository: " + session.getLocalRepository() + "}" );
         logger.debug( "\t{remoteRepositories: " + session.getRemoteRepositories() + "}" );
 
-        pluginManager.executeMojo( session, id );
+        pluginManager.verifyPluginForGoal( id, session );
+
+        MojoDescriptor mojoDescriptor = pluginManager.getMojoDescriptor( id );
+
+        if ( mojoDescriptor == null )
+        {
+            throw new PluginExecutionException( "Unable to find goal: " + id );
+        }
+
+        if ( mojoDescriptor.getExecutePhase() != null )
+        {
+            // TODO: is this too broad to execute?
+            execute( Collections.singletonList( mojoDescriptor.getExecutePhase() ), session );
+        }
+
+        pluginManager.executeMojo( session, mojoDescriptor );
     }
 
     // ----------------------------------------------------------------------

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=164930&r1=164929&r2=164930&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Tue Apr 26 18:16:06 2005
@@ -318,19 +318,11 @@
     // Plugin execution
     // ----------------------------------------------------------------------
 
-    public void executeMojo( MavenSession session, String goalName )
-        throws PluginExecutionException, PluginNotFoundException, PluginManagerException, ArtifactResolutionException
+    public void executeMojo( MavenSession session, MojoDescriptor mojoDescriptor )
+        throws ArtifactResolutionException, PluginManagerException, PluginExecutionException
     {
-        verifyPluginForGoal( goalName, session );
-
         PluginExecutionRequest request = null;
 
-        MojoDescriptor mojoDescriptor = getMojoDescriptor( goalName );
-        if ( mojoDescriptor == null )
-        {
-            throw new PluginExecutionException( "Unable to find goal: " + goalName );
-        }
-
         if ( mojoDescriptor.getRequiresDependencyResolution() != null )
         {
 
@@ -364,6 +356,8 @@
         }
 
         Plugin plugin = null;
+
+        String goalName = mojoDescriptor.getId();
 
         try
         {

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java?rev=164930&r1=164929&r2=164930&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java Tue Apr 26 18:16:06 2005
@@ -30,8 +30,8 @@
 {
     String ROLE = PluginManager.class.getName();
 
-    void executeMojo( MavenSession session, String goalName )
-        throws PluginExecutionException, PluginNotFoundException, PluginManagerException, ArtifactResolutionException;
+    void executeMojo( MavenSession session, MojoDescriptor mojoDescriptor )
+        throws PluginExecutionException, PluginManagerException, ArtifactResolutionException;
 
     MojoDescriptor getMojoDescriptor( String goalId );
 

Modified: maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java?rev=164930&r1=164929&r2=164930&view=diff
==============================================================================
--- maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java (original)
+++ maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java Tue Apr 26 18:16:06 2005
@@ -57,6 +57,8 @@
 
     private String phase;
 
+    private String executePhase;
+
     private List requirements;
 
     private String deprecated;
@@ -248,6 +250,16 @@
     public void setGoal( String goal )
     {
         this.goal = goal;
+    }
+
+    public String getExecutePhase()
+    {
+        return executePhase;
+    }
+
+    public void setExecutePhase( String executePhase )
+    {
+        this.executePhase = executePhase;
     }
 
     public boolean alwaysExecute()

Modified: maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java?rev=164930&r1=164929&r2=164930&view=diff
==============================================================================
--- maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java (original)
+++ maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java Tue Apr 26 18:16:06 2005
@@ -109,6 +109,13 @@
             mojo.setPhase( phase );
         }
 
+        String executePhase = c.getChild( "executePhase" ).getValue();
+
+        if ( executePhase != null )
+        {
+            mojo.setExecutePhase( executePhase );
+        }
+
         mojo.setInstantiationStrategy( c.getChild( "instantiationStrategy" ).getValue() );
 
         mojo.setDescription( c.getChild( "description" ).getValue() );

Modified: maven/components/trunk/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java?rev=164930&r1=164929&r2=164930&view=diff
==============================================================================
--- maven/components/trunk/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java (original)
+++ maven/components/trunk/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java Tue Apr 26 18:16:06 2005
@@ -119,6 +119,15 @@
         //
         // ----------------------------------------------------------------------
 
+        if ( mojoDescriptor.getExecutePhase() != null )
+        {
+            element( w, "executePhase", mojoDescriptor.getExecutePhase() );
+        }
+
+        // ----------------------------------------------------------------------
+        //
+        // ----------------------------------------------------------------------
+
         w.startElement( "implementation" );
 
         w.writeText( mojoDescriptor.getImplementation() );

Modified: maven/components/trunk/maven-plugin-tools/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugin-tools/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java?rev=164930&r1=164929&r2=164930&view=diff
==============================================================================
--- maven/components/trunk/maven-plugin-tools/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java (original)
+++ maven/components/trunk/maven-plugin-tools/maven-plugin-tools-java/src/main/java/org/apache/maven/tools/plugin/extractor/java/JavaMojoDescriptorExtractor.java Tue Apr 26 18:16:06 2005
@@ -62,7 +62,7 @@
 
     public static final String PHASE = "phase";
 
-    public static final String DISPATCH = "dispatch";
+    public static final String EXECUTE_PHASE = "executePhase";
 
     public static final String GOAL_DESCRIPTION = "description";
 
@@ -170,6 +170,17 @@
         if ( phase != null )
         {
             mojoDescriptor.setPhase( phase.getValue() );
+        }
+
+        // ----------------------------------------------------------------------
+        // Additional phase to execute first
+        // ----------------------------------------------------------------------
+
+        DocletTag executePhase = findInClassHierarchy( javaClass, EXECUTE_PHASE );
+
+        if ( executePhase != null )
+        {
+            mojoDescriptor.setExecutePhase( executePhase.getValue() );
         }
 
         // ----------------------------------------------------------------------

Modified: maven/components/trunk/maven-plugins/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/IdeaMojo.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/IdeaMojo.java?rev=164930&r1=164929&r2=164930&view=diff
==============================================================================
--- maven/components/trunk/maven-plugins/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/IdeaMojo.java (original)
+++ maven/components/trunk/maven-plugins/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/IdeaMojo.java Tue Apr 26 18:16:06 2005
@@ -38,6 +38,7 @@
 
 /**
  * @goal idea
+ * @executePhase generate-sources
  * @requiresDependencyResolution test
  * @description Goal for generating IDEA files from a POM
  * @parameter name="project"



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