You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2012/05/08 23:00:45 UTC

svn commit: r1335764 - in /maven/plugin-tools/branches/MPLUGIN-189: maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/ maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/ maven-plugin-tools-annotations...

Author: olamy
Date: Tue May  8 21:00:44 2012
New Revision: 1335764

URL: http://svn.apache.org/viewvc?rev=1335764&view=rev
Log:
use artifacts for scanning for future use

Modified:
    maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojo.java
    maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/JavaAnnotationsMojoDescriptorExtractor.java
    maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/DefaultMojoAnnotationsScanner.java
    maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/MojoAnnotationsScannerRequest.java
    maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/DefaultPluginToolsRequest.java
    maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/PluginToolsRequest.java

Modified: maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojo.java
URL: http://svn.apache.org/viewvc/maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojo.java?rev=1335764&r1=1335763&r2=1335764&view=diff
==============================================================================
--- maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojo.java (original)
+++ maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/AbstractGeneratorMojo.java Tue May  8 21:00:44 2012
@@ -19,6 +19,7 @@ package org.apache.maven.plugin.plugin;
  * under the License.
  */
 
+import org.apache.maven.artifact.Artifact;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
@@ -124,6 +125,16 @@ public abstract class AbstractGeneratorM
     protected boolean skip;
 
     /**
+     * The set of dependencies for the current project
+     *
+     * @parameter default-value = "${project.artifacts}"
+     * @required
+     * @readonly
+     * @since 3.0
+     */
+    protected Set<Artifact> dependencies;
+
+    /**
      * @return the output directory where files will be generated.
      */
     protected abstract File getOutputDirectory();
@@ -203,6 +214,7 @@ public abstract class AbstractGeneratorM
             PluginToolsRequest request = new DefaultPluginToolsRequest( project, pluginDescriptor );
             request.setEncoding( encoding );
             request.setSkipErrorNoDescriptorsFound( skipErrorNoDescriptorsFound );
+            request.setDependencies( dependencies );
 
             mojoScanner.populatePluginDescriptor( request );
 

Modified: maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/JavaAnnotationsMojoDescriptorExtractor.java
URL: http://svn.apache.org/viewvc/maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/JavaAnnotationsMojoDescriptorExtractor.java?rev=1335764&r1=1335763&r2=1335764&view=diff
==============================================================================
--- maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/JavaAnnotationsMojoDescriptorExtractor.java (original)
+++ maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/JavaAnnotationsMojoDescriptorExtractor.java Tue May  8 21:00:44 2012
@@ -22,7 +22,6 @@ import com.thoughtworks.qdox.JavaDocBuil
 import com.thoughtworks.qdox.model.DocletTag;
 import com.thoughtworks.qdox.model.JavaClass;
 import com.thoughtworks.qdox.model.JavaField;
-import org.apache.maven.artifact.DependencyResolutionRequiredException;
 import org.apache.maven.plugin.descriptor.DuplicateParameterException;
 import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
 import org.apache.maven.plugin.descriptor.MojoDescriptor;
@@ -75,29 +74,23 @@ public class JavaAnnotationsMojoDescript
     public List<MojoDescriptor> execute( PluginToolsRequest request )
         throws ExtractionException, InvalidPluginDescriptorException
     {
-        try
-        {
-            MojoAnnotationsScannerRequest mojoAnnotationsScannerRequest = new MojoAnnotationsScannerRequest();
 
-            mojoAnnotationsScannerRequest.setClassesDirectories(
-                Arrays.asList( new File( request.getProject().getBuild().getOutputDirectory() ) ) );
+        MojoAnnotationsScannerRequest mojoAnnotationsScannerRequest = new MojoAnnotationsScannerRequest();
 
-            mojoAnnotationsScannerRequest.setDependencies(
-                toFiles( request.getProject().getCompileClasspathElements() ) );
+        mojoAnnotationsScannerRequest.setClassesDirectories(
+            Arrays.asList( new File( request.getProject().getBuild().getOutputDirectory() ) ) );
 
-            Map<String, MojoAnnotatedClass> mojoAnnotatedClasses =
-                mojoAnnotationsScanner.scan( mojoAnnotationsScannerRequest );
+        mojoAnnotationsScannerRequest.setDependencies( request.getDependencies() );
 
-            Map<String, JavaClass> javaClassesMap = discoverClasses( request );
+        Map<String, MojoAnnotatedClass> mojoAnnotatedClasses =
+            mojoAnnotationsScanner.scan( mojoAnnotationsScannerRequest );
 
-            populateDataFromJavadoc( mojoAnnotatedClasses, javaClassesMap );
+        Map<String, JavaClass> javaClassesMap = discoverClasses( request );
+
+        populateDataFromJavadoc( mojoAnnotatedClasses, javaClassesMap );
+
+        return toMojoDescriptors( mojoAnnotatedClasses, request );
 
-            return toMojoDescriptors( mojoAnnotatedClasses, request );
-        }
-        catch ( DependencyResolutionRequiredException e )
-        {
-            throw new ExtractionException( e.getMessage(), e );
-        }
     }
 
     /**

Modified: maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/DefaultMojoAnnotationsScanner.java
URL: http://svn.apache.org/viewvc/maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/DefaultMojoAnnotationsScanner.java?rev=1335764&r1=1335763&r2=1335764&view=diff
==============================================================================
--- maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/DefaultMojoAnnotationsScanner.java (original)
+++ maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/DefaultMojoAnnotationsScanner.java Tue May  8 21:00:44 2012
@@ -18,6 +18,7 @@ package org.apache.maven.tools.plugin.an
  * under the License.
  */
 
+import org.apache.maven.artifact.Artifact;
 import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Execute;
 import org.apache.maven.plugins.annotations.Mojo;
@@ -66,17 +67,20 @@ public class DefaultMojoAnnotationsScann
         try
         {
 
-            for ( File dependency : request.getDependencies() )
+            for ( Artifact dependency : request.getDependencies() )
             {
-                if ( dependency.isDirectory() )
+                File dependencyFile = dependency.getFile();
+                if ( dependencyFile != null && dependencyFile.exists() )
                 {
-                    mojoAnnotatedClasses.putAll( scanDirectory( dependency, request.getIncludePatterns() ) );
-                }
-                else
-                {
-                    mojoAnnotatedClasses.putAll( scanFile( dependency, request.getIncludePatterns() ) );
+                    if ( dependencyFile.isDirectory() )
+                    {
+                        mojoAnnotatedClasses.putAll( scanDirectory( dependencyFile, request.getIncludePatterns() ) );
+                    }
+                    else
+                    {
+                        mojoAnnotatedClasses.putAll( scanFile( dependencyFile, request.getIncludePatterns() ) );
+                    }
                 }
-
             }
 
             for ( File classDirectory : request.getClassesDirectories() )

Modified: maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/MojoAnnotationsScannerRequest.java
URL: http://svn.apache.org/viewvc/maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/MojoAnnotationsScannerRequest.java?rev=1335764&r1=1335763&r2=1335764&view=diff
==============================================================================
--- maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/MojoAnnotationsScannerRequest.java (original)
+++ maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/MojoAnnotationsScannerRequest.java Tue May  8 21:00:44 2012
@@ -18,10 +18,14 @@ package org.apache.maven.tools.plugin.an
  * under the License.
  */
 
+import org.apache.maven.artifact.Artifact;
+
 import java.io.File;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 /**
  * @author Olivier Lamy
@@ -31,7 +35,7 @@ public class MojoAnnotationsScannerReque
 {
     private List<File> classesDirectories = new ArrayList<File>();
 
-    private List<File> dependencies = new ArrayList<File>();
+    private Set<Artifact> dependencies = new HashSet<Artifact>();
 
     private List<String> includePatterns = Arrays.asList( "**/*.class" );
 
@@ -52,12 +56,12 @@ public class MojoAnnotationsScannerReque
         this.classesDirectories = classesDirectories;
     }
 
-    public List<File> getDependencies()
+    public Set<Artifact> getDependencies()
     {
         return dependencies;
     }
 
-    public void setDependencies( List<File> dependencies )
+    public void setDependencies( Set<Artifact> dependencies )
     {
         this.dependencies = dependencies;
     }

Modified: maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/DefaultPluginToolsRequest.java
URL: http://svn.apache.org/viewvc/maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/DefaultPluginToolsRequest.java?rev=1335764&r1=1335763&r2=1335764&view=diff
==============================================================================
--- maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/DefaultPluginToolsRequest.java (original)
+++ maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/DefaultPluginToolsRequest.java Tue May  8 21:00:44 2012
@@ -19,23 +19,27 @@ package org.apache.maven.tools.plugin;
  * under the License.
  */
 
+import org.apache.maven.artifact.Artifact;
 import org.apache.maven.plugin.descriptor.MojoDescriptor;
 import org.apache.maven.plugin.descriptor.PluginDescriptor;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.StringUtils;
 
+import java.util.HashSet;
+import java.util.Set;
+
 /**
  * Default implementation of {@link PluginToolsRequest}, which is used to pass parameters to components used to extract
  * {@link MojoDescriptor} instances from different types of metadata for a given plugin.
- * 
+ *
  * @author jdcasey
  * @since 2.5
  */
 public class DefaultPluginToolsRequest
     implements PluginToolsRequest
 {
-    
+
     private static final String DEFAULT_ENCODING = ReaderFactory.FILE_ENCODING;
 
     private PluginDescriptor pluginDescriptor;
@@ -46,6 +50,8 @@ public class DefaultPluginToolsRequest
 
     private boolean skipErrorNoDescriptorsFound;
 
+    private Set<Artifact> dependencies;
+
     public DefaultPluginToolsRequest( MavenProject project, PluginDescriptor pluginDescriptor )
     {
         this.project = project;
@@ -59,7 +65,7 @@ public class DefaultPluginToolsRequest
     {
         return pluginDescriptor;
     }
-    
+
     /**
      * {@inheritDoc}
      */
@@ -76,7 +82,7 @@ public class DefaultPluginToolsRequest
     {
         return project;
     }
-    
+
     /**
      * {@inheritDoc}
      */
@@ -127,4 +133,19 @@ public class DefaultPluginToolsRequest
         this.skipErrorNoDescriptorsFound = skipErrorNoDescriptorsFound;
         return this;
     }
+
+    public Set<Artifact> getDependencies()
+    {
+        if ( this.dependencies == null )
+        {
+            this.dependencies = new HashSet<Artifact>();
+        }
+        return dependencies;
+    }
+
+    public PluginToolsRequest setDependencies( Set<Artifact> dependencies )
+    {
+        this.dependencies = dependencies;
+        return this;
+    }
 }

Modified: maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/PluginToolsRequest.java
URL: http://svn.apache.org/viewvc/maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/PluginToolsRequest.java?rev=1335764&r1=1335763&r2=1335764&view=diff
==============================================================================
--- maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/PluginToolsRequest.java (original)
+++ maven/plugin-tools/branches/MPLUGIN-189/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/PluginToolsRequest.java Tue May  8 21:00:44 2012
@@ -19,10 +19,13 @@ package org.apache.maven.tools.plugin;
  * under the License.
  */
 
+import org.apache.maven.artifact.Artifact;
 import org.apache.maven.plugin.descriptor.MojoDescriptor;
 import org.apache.maven.plugin.descriptor.PluginDescriptor;
 import org.apache.maven.project.MavenProject;
 
+import java.util.Set;
+
 /**
  * Request that encapsulates all information relevant to the process of extracting {@link MojoDescriptor}
  * instances from metadata for a certain type of mojo.
@@ -74,16 +77,29 @@ public interface PluginToolsRequest
      * By default an exception is throw if no mojo descriptor is found. As the maven-plugin is defined in core, the
      * descriptor generator mojo is bound to generate-resources phase.
      * But for annotations, the compiled classes are needed, so skip error
+     *
      * @since 3.0
      */
     PluginToolsRequest setSkipErrorNoDescriptorsFound( boolean skipErrorNoDescriptorsFound );
 
     /**
-     * @since 3.0
      * @return
+     * @since 3.0
      */
     boolean isSkipErrorNoDescriptorsFound();
 
+    /**
+     * Returns the list of {@link Artifact} used in class path scanning for annotations
+     * @return
+     * @since 3.0
+     */
+    Set<Artifact> getDependencies();
 
+    /**
+     *
+     * @param dependencies
+     * @return
+     */
+    PluginToolsRequest setDependencies( Set<Artifact> dependencies );
 
 }