You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by jd...@apache.org on 2005/08/16 20:03:42 UTC

svn commit: r233021 - in /maven/components/trunk: maven-core/src/main/java/org/apache/maven/lifecycle/ maven-core/src/main/resources/META-INF/plexus/ maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/ maven-plugin-tools/maven-plu...

Author: jdcasey
Date: Tue Aug 16 11:03:20 2005
New Revision: 233021

URL: http://svn.apache.org/viewcvs?rev=233021&view=rev
Log:
Working on MNG-483

o Added @requiresDirectInvocation (was: @cliOnly, but this implies m2 is run from CLI...counter-intuitive for embedding)

o Added handling for new @requiresDirectInvocation (generation/parsing, MojoDescriptor support, etc.)

o Added check in DefaultLifecycleExecutor to throw a LifecycleExecutionException if a mojo specified in a lifecycle binding is marked as direct-invocation only.

o Added MavenProjectHelper/DefaultMavenProjectHelper to provide convenience methods for manipulating MavenProject instances (for example, attaching artifacts or adding resources)

o Removed maven-artifact dependency from maven-source-plugin, and added dependency on maven-plugin-api (should've been there)


Added:
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectHelper.java   (with props)
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectHelper.java   (with props)
Modified:
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
    maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
    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-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AssemblyMojo.java
    maven/components/trunk/maven-plugins/maven-source-plugin/pom.xml
    maven/components/trunk/maven-plugins/maven-source-plugin/src/main/java/org/apache/maven/plugin/source/JarSourceMojo.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
    maven/components/trunk/maven-project/src/main/resources/META-INF/plexus/components.xml
    maven/components/trunk/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml

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=233021&r1=233020&r2=233021&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 Aug 16 11:03:20 2005
@@ -86,8 +86,6 @@
 
     private List phases;
 
-    private Map defaultPhases;
-
     private ArtifactHandlerManager artifactHandlerManager;
 
     // ----------------------------------------------------------------------
@@ -571,6 +569,12 @@
                     // Not from the CLI, don't use prefix
                     // TODO: [MNG-608] this needs to be false
                     MojoDescriptor mojoDescriptor = getMojoDescriptor( goal, session, project, selectedPhase, false );
+                    
+                    if ( mojoDescriptor.isDirectInvocationOnly() )
+                    {
+                        throw new LifecycleExecutionException( "Mojo: \'" + goal + "\' requires direct invocation. It cannot be used as part of lifecycle: \'" + project.getPackaging() + "\'." );
+                    }
+                    
                     addToLifecycleMappings( lifecycleMappings, phase, new MojoExecution( mojoDescriptor ),
                                             session.getSettings() );
                 }

Modified: maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml?rev=233021&r1=233020&r2=233021&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml Tue Aug 16 11:03:20 2005
@@ -138,6 +138,7 @@
         <!-- START SNIPPET: lifecyle -->
         <phases>
           <phase implementation="java.lang.String">validate</phase>
+          <phase implementation="java.lang.String">initialize</phase>
           <phase implementation="java.lang.String">generate-sources</phase>
           <phase implementation="java.lang.String">process-sources</phase>
           <phase implementation="java.lang.String">generate-resources</phase>
@@ -158,6 +159,7 @@
         </phases>
         <!-- END SNIPPET: lifecycle -->
         <!-- START SNIPPET: default-lifecycle -->
+        <!-- NOT USED, ACCORDING TO CODE.
         <defaultPhases>
           <process-resources>org.apache.maven.plugins:maven-resources-plugin:resources</process-resources>
           <compile>org.apache.maven.plugins:maven-compiler-plugin:compile</compile>
@@ -171,6 +173,7 @@
           <install>org.apache.maven.plugins:maven-install-plugin:install</install>
           <deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy>
         </defaultPhases>
+        -->
         <!-- END SNIPPET: default-lifecycle -->
       </configuration>
     </component>

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=233021&r1=233020&r2=233021&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 Aug 16 11:03:20 2005
@@ -79,6 +79,8 @@
     private PluginDescriptor pluginDescriptor;
 
     private boolean inheritedByDefault = true;
+    
+    private boolean directInvocationOnly = false;
 
     public MojoDescriptor()
     {
@@ -400,5 +402,15 @@
     public boolean isAggregator()
     {
         return aggregator;
+    }
+
+    public boolean isDirectInvocationOnly()
+    {
+        return directInvocationOnly;
+    }
+
+    public void setDirectInvocationOnly( boolean directInvocationOnly )
+    {
+        this.directInvocationOnly = directInvocationOnly;
     }
 }

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=233021&r1=233020&r2=233021&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 Aug 16 11:03:20 2005
@@ -160,6 +160,13 @@
             mojo.setDependencyResolutionRequired( dependencyResolution );
         }
 
+        String directInvocationOnly = c.getChild( "requiresDirectInvocation" ).getValue();
+
+        if ( directInvocationOnly != null )
+        {
+            mojo.setDirectInvocationOnly( Boolean.valueOf( directInvocationOnly ).booleanValue() );
+        }
+
         String requiresProject = c.getChild( "requiresProject" ).getValue();
 
         if ( requiresProject != null )
@@ -187,7 +194,7 @@
         {
             mojo.setInheritedByDefault( Boolean.valueOf( inheritedByDefault ).booleanValue() );
         }
-
+        
         // ----------------------------------------------------------------------
         // Parameters
         // ----------------------------------------------------------------------

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=233021&r1=233020&r2=233021&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 Aug 16 11:03:20 2005
@@ -126,6 +126,12 @@
         //
         // ----------------------------------------------------------------------
 
+        element( w, "requiresDirectInvocation", "" + mojoDescriptor.isDirectInvocationOnly() );
+
+        // ----------------------------------------------------------------------
+        //
+        // ----------------------------------------------------------------------
+
         element( w, "requiresProject", "" + mojoDescriptor.isProjectRequired() );
 
         // ----------------------------------------------------------------------

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=233021&r1=233020&r2=233021&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 Aug 16 11:03:20 2005
@@ -85,6 +85,8 @@
     public static final String GOAL_INHERIT_BY_DEFAULT = "inheritByDefault";
 
     public static final String GOAL_MULTI_EXECUTION_STRATEGY = "attainAlways";
+    
+    public static final String GOAL_REQUIRES_DIRECT_INVOCATION = "requiresDirectInvocation";
 
     protected void validateParameter( Parameter parameter, int i )
         throws InvalidParameterException
@@ -253,6 +255,17 @@
         if ( aggregator != null )
         {
             mojoDescriptor.setAggregator( true );
+        }
+
+        // ----------------------------------------------------------------------
+        // requiresDirectInvocation flag
+        // ----------------------------------------------------------------------
+
+        DocletTag requiresDirectInvocation = findInClassHierarchy( javaClass, GOAL_REQUIRES_DIRECT_INVOCATION );
+
+        if ( requiresDirectInvocation != null )
+        {
+            mojoDescriptor.setDirectInvocationOnly( true );
         }
 
         // ----------------------------------------------------------------------

Modified: maven/components/trunk/maven-plugins/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AssemblyMojo.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AssemblyMojo.java?rev=233021&r1=233020&r2=233021&view=diff
==============================================================================
--- maven/components/trunk/maven-plugins/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AssemblyMojo.java (original)
+++ maven/components/trunk/maven-plugins/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AssemblyMojo.java Tue Aug 16 11:03:20 2005
@@ -57,6 +57,7 @@
  * @version $Id$
  * @goal assembly
  * @requiresDependencyResolution test
+ * @requiresDirectInvocation
  * @execute phase="package"
  */
 public class AssemblyMojo

Modified: maven/components/trunk/maven-plugins/maven-source-plugin/pom.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-source-plugin/pom.xml?rev=233021&r1=233020&r2=233021&view=diff
==============================================================================
--- maven/components/trunk/maven-plugins/maven-source-plugin/pom.xml (original)
+++ maven/components/trunk/maven-plugins/maven-source-plugin/pom.xml Tue Aug 16 11:03:20 2005
@@ -28,7 +28,7 @@
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-artifact</artifactId>
+      <artifactId>maven-plugin-api</artifactId>
       <version>2.0-beta-1-SNAPSHOT</version>
     </dependency>
   </dependencies>

Modified: maven/components/trunk/maven-plugins/maven-source-plugin/src/main/java/org/apache/maven/plugin/source/JarSourceMojo.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-source-plugin/src/main/java/org/apache/maven/plugin/source/JarSourceMojo.java?rev=233021&r1=233020&r2=233021&view=diff
==============================================================================
--- maven/components/trunk/maven-plugins/maven-source-plugin/src/main/java/org/apache/maven/plugin/source/JarSourceMojo.java (original)
+++ maven/components/trunk/maven-plugins/maven-source-plugin/src/main/java/org/apache/maven/plugin/source/JarSourceMojo.java Tue Aug 16 11:03:20 2005
@@ -16,11 +16,10 @@
  * limitations under the License.
  */
 
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectHelper;
 import org.codehaus.plexus.archiver.jar.JarArchiver;
 
 import java.io.File;
@@ -45,9 +44,9 @@
     private MavenProject project;
 
     /**
-     * @parameter expression="${component.org.apache.maven.artifact.factory.ArtifactFactory}
+     * @parameter expression="${component.org.apache.maven.project.MavenProjectHelper}
      */
-    private ArtifactFactory artifactFactory;
+    private MavenProjectHelper projectHelper;
 
     /**
      * @parameter expression="${project.build.finalName}"
@@ -110,12 +109,7 @@
 
             // TODO: these introduced dependencies on the project are going to become problematic - can we export it
             //  through metadata instead?
-            Artifact artifact = artifactFactory.createArtifactWithClassifier( project.getGroupId(),
-                                                                              project.getArtifactId(),
-                                                                              project.getVersion(), null, "java-source",
-                                                                              "sources" );
-            artifact.setFile( outputFile );
-            project.addAttachedArtifact( artifact );
+            projectHelper.attachArtifact( project, "java-source", "sources", outputFile );
         }
         else
         {

Added: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectHelper.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectHelper.java?rev=233021&view=auto
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectHelper.java (added)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectHelper.java Tue Aug 16 11:03:20 2005
@@ -0,0 +1,52 @@
+package org.apache.maven.project;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.model.Resource;
+
+import java.io.File;
+import java.util.List;
+
+public class DefaultMavenProjectHelper
+    implements MavenProjectHelper
+{
+
+    // requirement.
+    private ArtifactFactory artifactFactory;
+
+    public void attachArtifact( MavenProject project, String artifactType, String artifactClassifier, File artifactFile )
+    {
+        Artifact artifact = artifactFactory.createArtifactWithClassifier( project.getGroupId(),
+                                                                          project.getArtifactId(),
+                                                                          project.getVersion(), 
+                                                                          null, 
+                                                                          "artifactType",
+                                                                          "artifactClassifier" );
+        
+        artifact.setFile( artifactFile );
+        artifact.setResolved( true );
+        
+        project.addAttachedArtifact( artifact );
+    }
+
+    public void addResource( MavenProject project, String resourceDirectory, List includes, List excludes )
+    {
+        Resource resource = new Resource();
+        resource.setDirectory( resourceDirectory );
+        resource.setIncludes( includes );
+        resource.setExcludes( excludes );
+
+        project.addResource( resource );
+    }
+
+    public void addTestResource( MavenProject project, String resourceDirectory, List includes, List excludes )
+    {
+        Resource resource = new Resource();
+        resource.setDirectory( resourceDirectory );
+        resource.setIncludes( includes );
+        resource.setExcludes( excludes );
+
+        project.addTestResource( resource );
+    }
+
+}

Propchange: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectHelper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectHelper.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java?rev=233021&r1=233020&r2=233021&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java Tue Aug 16 11:03:20 2005
@@ -1337,5 +1337,9 @@
         
         this.profileProperties = newProfilesProperties;
     }
+
+    public void attachArtifact( String type, String classifier, File file )
+    {
+    }
     
 }

Added: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectHelper.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectHelper.java?rev=233021&view=auto
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectHelper.java (added)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectHelper.java Tue Aug 16 11:03:20 2005
@@ -0,0 +1,17 @@
+package org.apache.maven.project;
+
+import java.io.File;
+import java.util.List;
+
+public interface MavenProjectHelper
+{
+    
+    String ROLE = MavenProjectHelper.class.getName();
+
+    void attachArtifact( MavenProject project, String artifactType, String artifactClassifier, File artifactFile );
+    
+    void addResource( MavenProject project, String resourceDirectory, List includes, List excludes );
+    
+    void addTestResource( MavenProject project, String resourceDirectory, List includes, List excludes );
+    
+}

Propchange: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectHelper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProjectHelper.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/components/trunk/maven-project/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/resources/META-INF/plexus/components.xml?rev=233021&r1=233020&r2=233021&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/components/trunk/maven-project/src/main/resources/META-INF/plexus/components.xml Tue Aug 16 11:03:20 2005
@@ -6,6 +6,20 @@
      |
      -->
     <component>
+      <role>org.apache.maven.project.MavenProjectHelper</role>
+      <implementation>org.apache.maven.project.DefaultMavenProjectHelper</implementation>
+      <requirements>
+        <requirement>
+          <role>org.apache.maven.artifact.factory.ArtifactFactory</role>
+        </requirement>
+      </requirements>
+    </component>
+<!--
+     |
+     |
+     |
+     -->
+    <component>
       <role>org.apache.maven.project.interpolation.ModelInterpolator</role>
       <implementation>org.apache.maven.project.interpolation.RegexBasedModelInterpolator</implementation>
     </component>

Modified: maven/components/trunk/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml?rev=233021&r1=233020&r2=233021&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml (original)
+++ maven/components/trunk/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml Tue Aug 16 11:03:20 2005
@@ -60,12 +60,12 @@
       <build>
         <plugins>
           <plugin>
-            <inherit>true</inherit>
+            <inherited>true</inherited>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-source-plugin</artifactId>
           </plugin>
           <plugin>
-            <inherit>true</inherit>
+            <inherited>true</inherited>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-deploy-plugin</artifactId>
             



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