Author: mbenson
Date: Mon Jun 13 22:29:28 2016
New Revision: 1748321

URL: http://svn.apache.org/viewvc?rev=1748321&view=rev
Log:
use aether APIs rather than Maven implementation for dependency gathering

Modified:
    commons/proper/weaver/trunk/maven-plugin/pom.xml
    
commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/AbstractCWMojo.java
    
commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/PrepareMojo.java
    
commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/TestPrepareMojo.java
    
commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/TestWeaveMojo.java
    
commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/WeaveMojo.java

Modified: commons/proper/weaver/trunk/maven-plugin/pom.xml
URL: 
http://svn.apache.org/viewvc/commons/proper/weaver/trunk/maven-plugin/pom.xml?rev=1748321&r1=1748320&r2=1748321&view=diff
==============================================================================
--- commons/proper/weaver/trunk/maven-plugin/pom.xml (original)
+++ commons/proper/weaver/trunk/maven-plugin/pom.xml Mon Jun 13 22:29:28 2016
@@ -34,8 +34,9 @@ under the License.
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.version>3.0.4</maven.version>
+    <maven.version>3.1.0</maven.version>
     <maven.plugin.version>3.1</maven.plugin.version>
+    <aether.version>1.1.0</aether.version>
   </properties>
 
   <scm>
@@ -72,6 +73,16 @@ under the License.
       <artifactId>plexus-utils</artifactId>
       <version>2.0.6</version>
     </dependency>
+    <dependency>
+      <groupId>org.eclipse.aether</groupId>
+      <artifactId>aether-api</artifactId>
+      <version>${aether.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.aether</groupId>
+      <artifactId>aether-util</artifactId>
+      <version>${aether.version}</version>
+    </dependency>
   </dependencies>
   <build>
     <plugins>

Modified: 
commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/AbstractCWMojo.java
URL: 
http://svn.apache.org/viewvc/commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/AbstractCWMojo.java?rev=1748321&r1=1748320&r2=1748321&view=diff
==============================================================================
--- 
commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/AbstractCWMojo.java
 (original)
+++ 
commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/AbstractCWMojo.java
 Mon Jun 13 22:29:28 2016
@@ -19,22 +19,47 @@
 package org.apache.commons.weaver.maven;
 
 import java.io.File;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Properties;
+import java.util.Set;
 
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.DependencyResolutionRequiredException;
-import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.maven.RepositoryUtils;
+import org.apache.maven.model.Dependency;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.collection.CollectRequest;
+import org.eclipse.aether.resolution.ArtifactResult;
+import org.eclipse.aether.resolution.DependencyRequest;
+import org.eclipse.aether.resolution.DependencyResolutionException;
+import org.eclipse.aether.resolution.DependencyResult;
+import org.eclipse.aether.util.artifact.JavaScopes;
+import org.eclipse.aether.util.filter.ScopeDependencyFilter;
 
 /**
  * Defines common properties and high-level management common to all 
commons-weaver Maven goals.
  */
 abstract class AbstractCWMojo extends AbstractMojo {
+    /**
+     * Marks a mojo as requiring dependencies in {@link JavaScopes#TEST} scope.
+     */
+    @Target(ElementType.TYPE)
+    @Retention(RetentionPolicy.RUNTIME)
+    @interface TestScope {
+    }
 
     /**
      * {@code verbose} parameter.
@@ -51,21 +76,22 @@ abstract class AbstractCWMojo extends Ab
     @Parameter(defaultValue = "${project}")
     protected MavenProject project;
 
-    /**
-     * Get the classpath for this prepare mojo.
-     * @return {@link List} of {@link String}
-     * @throws DependencyResolutionRequiredException
-     */
-    protected abstract List<String> getClasspath() throws 
DependencyResolutionRequiredException;
+    @Component
+    protected RepositorySystem repositorySystem;
+
+    @Parameter(defaultValue = "${repositorySystemSession}", readonly = true)
+    protected RepositorySystemSession repositorySystemSession;
 
     /**
      * Get the target directory for this prepare mojo.
+     * 
      * @return {@link File}
      */
     protected abstract File getTarget();
 
     /**
      * Execute this mojo.
+     * 
      * @throws MojoExecutionException in the event of failure
      */
     @Override
@@ -73,23 +99,16 @@ abstract class AbstractCWMojo extends Ab
         final JavaLoggingToMojoLoggingRedirector logRedirector = new 
JavaLoggingToMojoLoggingRedirector(getLog());
         logRedirector.activate();
 
-        project.setArtifactFilter(new ArtifactFilter() {
-
-            @Override
-            public boolean include(Artifact artifact) {
-                return true;
-            }
-        });
         try {
             final List<String> classpath;
             try {
-                classpath = getClasspath();
-            } catch (DependencyResolutionRequiredException e) {
+                classpath = createClasspath();
+            } catch (DependencyResolutionException e) {
                 throw new MojoExecutionException("Error getting classpath 
artifacts", e);
             }
             final File target = getTarget();
             final Properties config = weaverConfig == null ? new Properties() 
: weaverConfig;
-            
+
             getLog().debug(String.format("classpath=%s%ntarget=%s%nconfig=%s", 
classpath, target, config));
 
             doExecute(target, classpath, config);
@@ -101,4 +120,33 @@ abstract class AbstractCWMojo extends Ab
     protected abstract void doExecute(File target, List<String> classpath, 
Properties config)
         throws MojoExecutionException, MojoFailureException;
 
+    private List<String> createClasspath() throws 
DependencyResolutionException {
+        final CollectRequest collect = new CollectRequest();
+        
collect.setRootArtifact(RepositoryUtils.toArtifact(project.getArtifact()));
+        collect.setRequestContext("project");
+        collect.setRepositories(project.getRemoteProjectRepositories());
+
+        for (Dependency dependency : project.getDependencies()) {
+            // guard against case where best-effort resolution for invalid 
models is requested:
+            if (StringUtils.isAnyBlank(dependency.getGroupId(), 
dependency.getArtifactId(), dependency.getVersion())) {
+                continue;
+            }
+            collect.addDependency(
+                RepositoryUtils.toDependency(dependency, 
repositorySystemSession.getArtifactTypeRegistry()));
+        }
+        final DependencyResult dependencyResult =
+            repositorySystem.resolveDependencies(repositorySystemSession, new 
DependencyRequest()
+                .setFilter(new 
ScopeDependencyFilter(getExcludeScopes())).setCollectRequest(collect));
+
+        final Set<String> result = new LinkedHashSet<String>();
+        for (ArtifactResult artifactResult : 
dependencyResult.getArtifactResults()) {
+            
result.add(artifactResult.getArtifact().getFile().getAbsolutePath());
+        }
+        return new ArrayList<String>(result);
+    }
+
+    private String[] getExcludeScopes() {
+        return getClass().isAnnotationPresent(TestScope.class) ? 
ArrayUtils.EMPTY_STRING_ARRAY
+            : new String[] { JavaScopes.TEST };
+    }
 }

Modified: 
commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/PrepareMojo.java
URL: 
http://svn.apache.org/viewvc/commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/PrepareMojo.java?rev=1748321&r1=1748320&r2=1748321&view=diff
==============================================================================
--- 
commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/PrepareMojo.java
 (original)
+++ 
commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/PrepareMojo.java
 Mon Jun 13 22:29:28 2016
@@ -19,12 +19,7 @@
 package org.apache.commons.weaver.maven;
 
 import java.io.File;
-import java.util.ArrayList;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
 
-import org.apache.maven.artifact.DependencyResolutionRequiredException;
 import org.apache.maven.model.Build;
 import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
@@ -49,17 +44,6 @@ public class PrepareMojo extends Abstrac
 
     /**
      * {@inheritDoc}
-     */
-    @Override
-    protected List<String> getClasspath() throws 
DependencyResolutionRequiredException {
-        final Set<String> result = new LinkedHashSet<String>();
-        result.addAll(project.getCompileClasspathElements());
-        result.addAll(project.getRuntimeClasspathElements());
-        return new ArrayList<String>(result);
-    }
-
-    /**
-     * {@inheritDoc}
      */
     @Override
     protected File getTarget() {

Modified: 
commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/TestPrepareMojo.java
URL: 
http://svn.apache.org/viewvc/commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/TestPrepareMojo.java?rev=1748321&r1=1748320&r2=1748321&view=diff
==============================================================================
--- 
commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/TestPrepareMojo.java
 (original)
+++ 
commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/TestPrepareMojo.java
 Mon Jun 13 22:29:28 2016
@@ -19,9 +19,8 @@
 package org.apache.commons.weaver.maven;
 
 import java.io.File;
-import java.util.List;
 
-import org.apache.maven.artifact.DependencyResolutionRequiredException;
+import org.apache.commons.weaver.maven.AbstractCWMojo.TestScope;
 import org.apache.maven.model.Build;
 import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
@@ -37,6 +36,7 @@ import org.apache.maven.plugins.annotati
     requiresDependencyCollection = ResolutionScope.TEST,
     requiresDependencyResolution = ResolutionScope.TEST
 )
+@TestScope
 public class TestPrepareMojo extends AbstractPrepareMojo {
     /**
      * {@link Build#getTestOutputDirectory()}.
@@ -46,14 +46,6 @@ public class TestPrepareMojo extends Abs
 
     /**
      * {@inheritDoc}
-     */
-    @Override
-    protected List<String> getClasspath() throws 
DependencyResolutionRequiredException {
-        return project.getTestClasspathElements();
-    }
-
-    /**
-     * {@inheritDoc}
      */
     @Override
     protected File getTarget() {

Modified: 
commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/TestWeaveMojo.java
URL: 
http://svn.apache.org/viewvc/commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/TestWeaveMojo.java?rev=1748321&r1=1748320&r2=1748321&view=diff
==============================================================================
--- 
commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/TestWeaveMojo.java
 (original)
+++ 
commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/TestWeaveMojo.java
 Mon Jun 13 22:29:28 2016
@@ -21,7 +21,7 @@ package org.apache.commons.weaver.maven;
 import java.io.File;
 import java.util.List;
 
-import org.apache.maven.artifact.DependencyResolutionRequiredException;
+import org.apache.commons.weaver.maven.AbstractCWMojo.TestScope;
 import org.apache.maven.model.Build;
 import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
@@ -38,6 +38,7 @@ import org.apache.maven.project.MavenPro
     requiresDependencyCollection = ResolutionScope.TEST,
     requiresDependencyResolution = ResolutionScope.TEST
 )
+@TestScope
 public class TestWeaveMojo extends AbstractWeaveMojo {
 
     /**
@@ -54,14 +55,6 @@ public class TestWeaveMojo extends Abstr
 
     /**
      * {@inheritDoc}
-     */
-    @Override
-    protected List<String> getClasspath() throws 
DependencyResolutionRequiredException {
-        return project.getTestClasspathElements();
-    }
-
-    /**
-     * {@inheritDoc}
      */
     @Override
     protected File getTarget() {

Modified: 
commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/WeaveMojo.java
URL: 
http://svn.apache.org/viewvc/commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/WeaveMojo.java?rev=1748321&r1=1748320&r2=1748321&view=diff
==============================================================================
--- 
commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/WeaveMojo.java
 (original)
+++ 
commons/proper/weaver/trunk/maven-plugin/src/main/java/org/apache/commons/weaver/maven/WeaveMojo.java
 Mon Jun 13 22:29:28 2016
@@ -19,12 +19,7 @@
 package org.apache.commons.weaver.maven;
 
 import java.io.File;
-import java.util.ArrayList;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
 
-import org.apache.maven.artifact.DependencyResolutionRequiredException;
 import org.apache.maven.model.Build;
 import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
@@ -50,17 +45,6 @@ public class WeaveMojo extends AbstractW
 
     /**
      * {@inheritDoc}
-     */
-    @Override
-    protected List<String> getClasspath() throws 
DependencyResolutionRequiredException {
-        final Set<String> result = new LinkedHashSet<String>();
-        result.addAll(project.getCompileClasspathElements());
-        result.addAll(project.getRuntimeClasspathElements());
-        return new ArrayList<String>(result);
-    }
-
-    /**
-     * {@inheritDoc}
      */
     @Override
     protected File getTarget() {


Reply via email to