[MSHARED-250] updated support for Maven 3.1-alpha-1/Eclipse Aether 0.9.0-M2
git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@1467812 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pom.xml b/pom.xml
index ae98e2d..ec3399f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -78,9 +78,14 @@
<dependency>
<groupId>org.eclipse.aether</groupId>
<artifactId>aether-api</artifactId>
- <version>0.9.0.M1</version>
+ <version>0.9.0.M2</version>
<optional>true</optional>
</dependency>
+ <dependency>
+ <groupId>org.eclipse.aether</groupId>
+ <artifactId>aether-util</artifactId>
+ <version>0.9.0.M2</version>
+ </dependency>
<dependency>
<groupId>jmock</groupId>
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java b/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java
index bc229d0..9caacf0 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java
@@ -73,16 +73,7 @@
*/
protected static boolean isMaven2x()
{
- try
- {
- Thread.currentThread().getContextClassLoader().loadClass( "org.apache.maven.project.DependencyResolutionRequest" ); // Maven 3 specific
-
- return false;
- }
- catch ( ClassNotFoundException e )
- {
- return true;
- }
+ return !canFindCoreClass( "org.apache.maven.project.DependencyResolutionRequest" ); // Maven 3 specific
}
/**
@@ -90,15 +81,20 @@
*/
protected static boolean isMaven31()
{
+ return canFindCoreClass( "org.eclipse.aether.artifact.Artifact" ); // Maven 3.1 specific
+ }
+
+ private static boolean canFindCoreClass( String className)
+ {
try
{
- Class.forName( "org.eclipse.aether.artifact.Artifact" ); // Maven 3.1 specific
+ Thread.currentThread().getContextClassLoader().loadClass( className );
- return false;
+ return true;
}
catch ( ClassNotFoundException e )
{
- return true;
+ return false;
}
}
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java b/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java
index e7d2644..e288f4d 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java
@@ -40,7 +40,10 @@
import org.apache.maven.shared.dependency.graph.DependencyNode;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
+import org.eclipse.aether.DefaultRepositorySystemSession;
+import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.graph.Dependency;
+import org.eclipse.aether.util.graph.manager.DependencyManagerUtils;
import org.eclipse.aether.version.VersionConstraint;
/**
@@ -66,15 +69,31 @@
try
{
ProjectBuildingRequest projectBuildingRequest =
- (ProjectBuildingRequest) invoke( project, "getProjectBuildingRequest" );
+ (ProjectBuildingRequest) invoke( project.getClass(), project, "getProjectBuildingRequest" );
+
+ RepositorySystemSession session =
+ (RepositorySystemSession) invoke( ProjectBuildingRequest.class, projectBuildingRequest,
+ "getRepositorySession" );
+
+ if ( Boolean.TRUE != ( (Boolean) session.getConfigProperties().get( DependencyManagerUtils.NODE_DATA_PREMANAGED_VERSION ) ) )
+ {
+ DefaultRepositorySystemSession newSession = new DefaultRepositorySystemSession( session );
+ newSession.setConfigProperty( DependencyManagerUtils.NODE_DATA_PREMANAGED_VERSION, true );
+ session = newSession;
+ }
DependencyResolutionRequest request =
- new DefaultDependencyResolutionRequest( project, projectBuildingRequest.getRepositorySession() );
+ new DefaultDependencyResolutionRequest();
+ request.setMavenProject( project );
+ invoke( request, "setRepositorySession", RepositorySystemSession.class, session );
DependencyResolutionResult result = resolver.resolve( request );
- return buildDependencyNode( null, (org.eclipse.aether.graph.DependencyNode) result.getDependencyGraph(),
- project.getArtifact(), filter );
+ org.eclipse.aether.graph.DependencyNode graph =
+ (org.eclipse.aether.graph.DependencyNode) invoke( DependencyResolutionResult.class, result,
+ "getDependencyGraph" );
+
+ return buildDependencyNode( null, graph, project.getArtifact(), filter );
}
catch ( DependencyResolutionException e )
{
@@ -94,10 +113,16 @@
}
}
- private Object invoke( Object object, String method )
+ private Object invoke( Class<?> clazz, Object object, String method )
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException
{
- return object.getClass().getMethod( method ).invoke( object );
+ return clazz.getMethod( method ).invoke( object );
+ }
+
+ private Object invoke( Object object, String method, Class<?> clazz, Object arg )
+ throws IllegalAccessException, InvocationTargetException, NoSuchMethodException
+ {
+ return object.getClass().getMethod( method, clazz ).invoke( object, arg );
}
private Artifact getDependencyArtifact( Dependency dep )
@@ -113,8 +138,11 @@
private DependencyNode buildDependencyNode( DependencyNode parent, org.eclipse.aether.graph.DependencyNode node,
Artifact artifact, ArtifactFilter filter )
{
+ String premanagedVersion = DependencyManagerUtils.getPremanagedVersion( node );
+ String premanagedScope = DependencyManagerUtils.getPremanagedScope( node );
+
DefaultDependencyNode current =
- new DefaultDependencyNode( parent, artifact, node.getPremanagedVersion(), node.getPremanagedScope(),
+ new DefaultDependencyNode( parent, artifact, premanagedVersion, premanagedScope,
getVersionSelectedFromRange( node.getVersionConstraint() ) );
List<DependencyNode> nodes = new ArrayList<DependencyNode>( node.getChildren().size() );