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() {