Use Model instead of ProjectCoordinate so we have direct access to dependencies and dependencyMangement.
git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@1752215 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/collect/DependencyCollector.java b/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/collect/DependencyCollector.java
index 751a1a2..4a07626 100644
--- a/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/collect/DependencyCollector.java
+++ b/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/collect/DependencyCollector.java
@@ -20,9 +20,9 @@
*/
import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Model;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.dependencies.DependableCoordinate;
-import org.apache.maven.shared.project.ProjectCoordinate;
/**
* Will only download the pom files when not available, never the artifact.
@@ -47,7 +47,7 @@
CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, DependableCoordinate root )
throws DependencyCollectorException;
- CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, ProjectCoordinate root )
+ CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, Model root )
throws DependencyCollectorException;
}
diff --git a/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/collect/internal/DefaultDependencyCollector.java b/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/collect/internal/DefaultDependencyCollector.java
index c1d8843..19bdc32 100644
--- a/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/collect/internal/DefaultDependencyCollector.java
+++ b/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/collect/internal/DefaultDependencyCollector.java
@@ -20,12 +20,12 @@
*/
import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Model;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.dependencies.DependableCoordinate;
import org.apache.maven.shared.dependencies.collect.CollectorResult;
import org.apache.maven.shared.dependencies.collect.DependencyCollector;
import org.apache.maven.shared.dependencies.collect.DependencyCollectorException;
-import org.apache.maven.shared.project.ProjectCoordinate;
import org.codehaus.plexus.PlexusConstants;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.component.annotations.Component;
@@ -81,7 +81,7 @@
}
@Override
- public CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, ProjectCoordinate root )
+ public CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, Model root )
throws DependencyCollectorException
{
try
diff --git a/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/collect/internal/Maven30DependencyCollector.java b/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/collect/internal/Maven30DependencyCollector.java
index 20b8f95..3ba098e 100644
--- a/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/collect/internal/Maven30DependencyCollector.java
+++ b/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/collect/internal/Maven30DependencyCollector.java
@@ -19,17 +19,18 @@
* under the License.
*/
+import java.util.ArrayList;
import java.util.List;
import org.apache.maven.RepositoryUtils;
import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
+import org.apache.maven.model.Model;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.dependencies.DependableCoordinate;
import org.apache.maven.shared.dependencies.collect.CollectorResult;
import org.apache.maven.shared.dependencies.collect.DependencyCollector;
import org.apache.maven.shared.dependencies.collect.DependencyCollectorException;
-import org.apache.maven.shared.project.ProjectCoordinate;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
import org.sonatype.aether.RepositorySystem;
@@ -64,16 +65,15 @@
throws DependencyCollectorException
{
ArtifactTypeRegistry typeRegistry =
- (ArtifactTypeRegistry) Invoker.invoke( RepositoryUtils.class, "newArtifactTypeRegistry",
- ArtifactHandlerManager.class, artifactHandlerManager );
+ (ArtifactTypeRegistry) Invoker.invoke( RepositoryUtils.class, "newArtifactTypeRegistry",
+ ArtifactHandlerManager.class, artifactHandlerManager );
- Class<?>[] argClasses = new Class<?>[] { Dependency.class, ArtifactTypeRegistry.class };
- Object[] args = new Object[] { root, typeRegistry };
- Dependency aetherRoot = (Dependency) Invoker.invoke( RepositoryUtils.class, "toDependency", argClasses, args );
+ CollectRequest request = new CollectRequest();
+ request.setRoot( toDependency( root, typeRegistry ) );
- return collectDependencies( buildingRequest, aetherRoot );
+ return collectDependencies( buildingRequest, request );
}
-
+
@Override
public CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, DependableCoordinate root )
throws DependencyCollectorException
@@ -85,13 +85,14 @@
Artifact aetherArtifact = new DefaultArtifact( root.getGroupId(), root.getArtifactId(), root.getClassifier(),
extension, root.getVersion() );
- Dependency aetherRoot = new Dependency( aetherArtifact, null );
+ CollectRequest request = new CollectRequest();
+ request.setRoot( new Dependency( aetherArtifact, null ) );
- return collectDependencies( buildingRequest, aetherRoot );
+ return collectDependencies( buildingRequest, request );
}
@Override
- public CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, ProjectCoordinate root )
+ public CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, Model root )
throws DependencyCollectorException
{
// Are there examples where packaging and type are NOT in sync
@@ -102,20 +103,42 @@
Artifact aetherArtifact =
new DefaultArtifact( root.getGroupId(), root.getArtifactId(), extension, root.getVersion() );
- Dependency aetherRoot = new Dependency( aetherArtifact, null );
+ CollectRequest request = new CollectRequest();
+ request.setRoot( new Dependency( aetherArtifact, null ) );
- return collectDependencies( buildingRequest, aetherRoot );
+ ArtifactTypeRegistry typeRegistry =
+ (ArtifactTypeRegistry) Invoker.invoke( RepositoryUtils.class, "newArtifactTypeRegistry",
+ ArtifactHandlerManager.class, artifactHandlerManager );
+
+ List<Dependency> aetherDependencies = new ArrayList<Dependency>( root.getDependencies().size() );
+ for ( org.apache.maven.model.Dependency mavenDependency : root.getDependencies() )
+ {
+ aetherDependencies.add( toDependency( mavenDependency, typeRegistry ) );
+ }
+ request.setDependencies( aetherDependencies );
+
+ if ( root.getDependencyManagement() != null )
+ {
+ List<Dependency> aetherManagerDependencies =
+ new ArrayList<Dependency>( root.getDependencyManagement().getDependencies().size() );
+
+ for ( org.apache.maven.model.Dependency mavenDependency : root.getDependencyManagement().getDependencies() )
+ {
+ aetherManagerDependencies.add( toDependency( mavenDependency, typeRegistry ) );
+ }
+
+ request.setManagedDependencies( aetherManagerDependencies );
+ }
+
+ return collectDependencies( buildingRequest, request );
}
- private CollectorResult collectDependencies( final ProjectBuildingRequest buildingRequest, Dependency aetherRoot )
+ private CollectorResult collectDependencies( final ProjectBuildingRequest buildingRequest, CollectRequest request )
throws DependencyCollectorException
{
RepositorySystemSession session =
(RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
- CollectRequest request = new CollectRequest();
- request.setRoot( aetherRoot );
-
@SuppressWarnings( "unchecked" )
List<RemoteRepository> aetherRepositories =
(List<RemoteRepository>) Invoker.invoke( RepositoryUtils.class, "toRepos", List.class,
@@ -132,4 +155,14 @@
}
}
+ private static Dependency toDependency( org.apache.maven.model.Dependency mavenDependency,
+ ArtifactTypeRegistry typeRegistry )
+ throws DependencyCollectorException
+ {
+ Class<?>[] argClasses = new Class<?>[] { Dependency.class, ArtifactTypeRegistry.class };
+
+ Object[] args = new Object[] { mavenDependency, typeRegistry };
+
+ return (Dependency) Invoker.invoke( RepositoryUtils.class, "toDependency", argClasses, args );
+ }
}
diff --git a/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/collect/internal/Maven31DependencyCollector.java b/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/collect/internal/Maven31DependencyCollector.java
index b42b96a..9b0a9db 100644
--- a/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/collect/internal/Maven31DependencyCollector.java
+++ b/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/collect/internal/Maven31DependencyCollector.java
@@ -19,17 +19,18 @@
* under the License.
*/
+import java.util.ArrayList;
import java.util.List;
import org.apache.maven.RepositoryUtils;
import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
+import org.apache.maven.model.Model;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.dependencies.DependableCoordinate;
import org.apache.maven.shared.dependencies.collect.CollectorResult;
import org.apache.maven.shared.dependencies.collect.DependencyCollector;
import org.apache.maven.shared.dependencies.collect.DependencyCollectorException;
-import org.apache.maven.shared.project.ProjectCoordinate;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
import org.eclipse.aether.RepositorySystem;
@@ -64,16 +65,15 @@
throws DependencyCollectorException
{
ArtifactTypeRegistry typeRegistry =
- (ArtifactTypeRegistry) Invoker.invoke( RepositoryUtils.class, "newArtifactTypeRegistry",
- ArtifactHandlerManager.class, artifactHandlerManager );
+ (ArtifactTypeRegistry) Invoker.invoke( RepositoryUtils.class, "newArtifactTypeRegistry",
+ ArtifactHandlerManager.class, artifactHandlerManager );
- Class<?>[] argClasses = new Class<?>[] { org.apache.maven.model.Dependency.class, ArtifactTypeRegistry.class };
- Object[] args = new Object[] { root, typeRegistry };
- Dependency aetherRoot = (Dependency) Invoker.invoke( RepositoryUtils.class, "toDependency", argClasses, args );
+ CollectRequest request = new CollectRequest();
+ request.setRoot( toDependency( root, typeRegistry ) );
- return collectDependencies( buildingRequest, aetherRoot );
+ return collectDependencies( buildingRequest, request );
}
-
+
@Override
public CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, DependableCoordinate root )
throws DependencyCollectorException
@@ -85,13 +85,14 @@
Artifact aetherArtifact = new DefaultArtifact( root.getGroupId(), root.getArtifactId(), root.getClassifier(),
extension, root.getVersion() );
- Dependency aetherRoot = new Dependency( aetherArtifact, null );
+ CollectRequest request = new CollectRequest();
+ request.setRoot( new Dependency( aetherArtifact, null ) );
- return collectDependencies( buildingRequest, aetherRoot );
+ return collectDependencies( buildingRequest, request );
}
@Override
- public CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, ProjectCoordinate root )
+ public CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, Model root )
throws DependencyCollectorException
{
// Are there examples where packaging and type are NOT in sync
@@ -102,17 +103,39 @@
Artifact aetherArtifact =
new DefaultArtifact( root.getGroupId(), root.getArtifactId(), extension, root.getVersion() );
- Dependency aetherRoot = new Dependency( aetherArtifact, null );
+ CollectRequest request = new CollectRequest();
+ request.setRoot( new Dependency( aetherArtifact, null ) );
+
+ ArtifactTypeRegistry typeRegistry =
+ (ArtifactTypeRegistry) Invoker.invoke( RepositoryUtils.class, "newArtifactTypeRegistry",
+ ArtifactHandlerManager.class, artifactHandlerManager );
- return collectDependencies( buildingRequest, aetherRoot );
+ List<Dependency> aetherDependencies = new ArrayList<Dependency>( root.getDependencies().size() );
+ for ( org.apache.maven.model.Dependency mavenDependency : root.getDependencies() )
+ {
+ aetherDependencies.add( toDependency( mavenDependency, typeRegistry ) );
+ }
+ request.setDependencies( aetherDependencies );
+
+ if ( root.getDependencyManagement() != null )
+ {
+ List<Dependency> aetherManagerDependencies =
+ new ArrayList<Dependency>( root.getDependencyManagement().getDependencies().size() );
+
+ for ( org.apache.maven.model.Dependency mavenDependency : root.getDependencyManagement().getDependencies() )
+ {
+ aetherManagerDependencies.add( toDependency( mavenDependency, typeRegistry ) );
+ }
+
+ request.setManagedDependencies( aetherManagerDependencies );
+ }
+
+ return collectDependencies( buildingRequest, request );
}
- private CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, Dependency aetherRoot )
+ private CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, CollectRequest request )
throws DependencyCollectorException
{
- CollectRequest request = new CollectRequest();
- request.setRoot( aetherRoot );
-
RepositorySystemSession session =
(RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
@@ -132,4 +155,13 @@
}
}
+ private static Dependency toDependency( org.apache.maven.model.Dependency root, ArtifactTypeRegistry typeRegistry )
+ throws DependencyCollectorException
+ {
+ Class<?>[] argClasses = new Class<?>[] { org.apache.maven.model.Dependency.class, ArtifactTypeRegistry.class };
+
+ Object[] args = new Object[] { root, typeRegistry };
+
+ return (Dependency) Invoker.invoke( RepositoryUtils.class, "toDependency", argClasses, args );
+ }
}
diff --git a/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/resolve/DependencyResolver.java b/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/resolve/DependencyResolver.java
index 262b0cf..dd3c8cd 100644
--- a/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/resolve/DependencyResolver.java
+++ b/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/resolve/DependencyResolver.java
@@ -22,11 +22,11 @@
import java.util.Collection;
import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Model;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.artifact.filter.resolve.TransformableFilter;
import org.apache.maven.shared.artifact.resolve.ArtifactResult;
import org.apache.maven.shared.dependencies.DependableCoordinate;
-import org.apache.maven.shared.project.ProjectCoordinate;
/**
*
@@ -50,7 +50,7 @@
TransformableFilter filter ) throws DependencyResolverException;
Iterable<ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest,
- ProjectCoordinate coordinate,
+ Model model,
TransformableFilter filter ) throws DependencyResolverException;
/**
diff --git a/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/resolve/internal/DefaultDependencyResolver.java b/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/resolve/internal/DefaultDependencyResolver.java
index b957e1e..a58a80a 100644
--- a/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/resolve/internal/DefaultDependencyResolver.java
+++ b/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/resolve/internal/DefaultDependencyResolver.java
@@ -22,13 +22,13 @@
import java.util.Collection;
import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Model;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.artifact.filter.resolve.TransformableFilter;
import org.apache.maven.shared.artifact.resolve.ArtifactResult;
import org.apache.maven.shared.dependencies.DependableCoordinate;
import org.apache.maven.shared.dependencies.resolve.DependencyResolver;
import org.apache.maven.shared.dependencies.resolve.DependencyResolverException;
-import org.apache.maven.shared.project.ProjectCoordinate;
import org.codehaus.plexus.PlexusConstants;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.component.annotations.Component;
@@ -88,7 +88,7 @@
@Override
public Iterable<ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest,
- ProjectCoordinate coordinate, TransformableFilter filter )
+ Model model, TransformableFilter filter )
throws DependencyResolverException
{
try
@@ -97,7 +97,7 @@
DependencyResolver effectiveArtifactResolver = container.lookup( DependencyResolver.class, hint );
- return effectiveArtifactResolver.resolveDependencies( buildingRequest, coordinate, filter );
+ return effectiveArtifactResolver.resolveDependencies( buildingRequest, model, filter );
}
catch ( ComponentLookupException e )
{
diff --git a/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/resolve/internal/Maven30DependencyResolver.java b/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/resolve/internal/Maven30DependencyResolver.java
index 558000d..fb2ebd1 100644
--- a/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/resolve/internal/Maven30DependencyResolver.java
+++ b/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/resolve/internal/Maven30DependencyResolver.java
@@ -27,13 +27,14 @@
import org.apache.maven.RepositoryUtils;
import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
+import org.apache.maven.model.DependencyManagement;
+import org.apache.maven.model.Model;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.artifact.filter.resolve.TransformableFilter;
import org.apache.maven.shared.artifact.filter.resolve.transform.SonatypeAetherFilterTransformer;
import org.apache.maven.shared.dependencies.DependableCoordinate;
import org.apache.maven.shared.dependencies.resolve.DependencyResolver;
import org.apache.maven.shared.dependencies.resolve.DependencyResolverException;
-import org.apache.maven.shared.project.ProjectCoordinate;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
@@ -92,18 +93,18 @@
@Override
// CHECKSTYLE_OFF: LineLength
public Iterable<org.apache.maven.shared.artifact.resolve.ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest,
- ProjectCoordinate root,
+ Model model,
TransformableFilter dependencyFilter )
// CHECKSTYLE_ON: LineLength
throws DependencyResolverException
{
// Are there examples where packaging and type are NOT in sync
- ArtifactHandler artifactHandler = artifactHandlerManager.getArtifactHandler( root.getPackaging() );
+ ArtifactHandler artifactHandler = artifactHandlerManager.getArtifactHandler( model.getPackaging() );
String extension = artifactHandler != null ? artifactHandler.getExtension() : null;
Artifact aetherArtifact =
- new DefaultArtifact( root.getGroupId(), root.getArtifactId(), extension, root.getVersion() );
+ new DefaultArtifact( model.getGroupId(), model.getArtifactId(), extension, model.getVersion() );
Dependency aetherRoot = new Dependency( aetherArtifact, null );
@@ -113,6 +114,31 @@
buildingRequest.getRemoteRepositories() );
CollectRequest request = new CollectRequest( aetherRoot, aetherRepositories );
+
+ ArtifactTypeRegistry typeRegistry =
+ (ArtifactTypeRegistry) Invoker.invoke( RepositoryUtils.class, "newArtifactTypeRegistry",
+ ArtifactHandlerManager.class, artifactHandlerManager );
+
+ List<Dependency> aetherDependencies = new ArrayList<Dependency>( model.getDependencies().size() );
+ for ( org.apache.maven.model.Dependency mavenDependency : model.getDependencies() )
+ {
+ aetherDependencies.add( toDependency( mavenDependency, typeRegistry ) );
+ }
+ request.setDependencies( aetherDependencies );
+
+ DependencyManagement mavenDependencyManagement = model.getDependencyManagement();
+ if ( mavenDependencyManagement != null )
+ {
+ List<Dependency> aetherManagerDependencies =
+ new ArrayList<Dependency>( mavenDependencyManagement.getDependencies().size() );
+
+ for ( org.apache.maven.model.Dependency mavenDependency : mavenDependencyManagement.getDependencies() )
+ {
+ aetherManagerDependencies.add( toDependency( mavenDependency, typeRegistry ) );
+ }
+
+ request.setManagedDependencies( aetherManagerDependencies );
+ }
return resolveDependencies( buildingRequest, aetherRepositories, dependencyFilter, request );
}
@@ -251,4 +277,15 @@
return new Dependency( artifact, null );
}
+
+ private static Dependency toDependency( org.apache.maven.model.Dependency mavenDependency,
+ ArtifactTypeRegistry typeRegistry )
+ throws DependencyResolverException
+ {
+ Class<?>[] argClasses = new Class<?>[] { Dependency.class, ArtifactTypeRegistry.class };
+
+ Object[] args = new Object[] { mavenDependency, typeRegistry };
+
+ return (Dependency) Invoker.invoke( RepositoryUtils.class, "toDependency", argClasses, args );
+ }
}
diff --git a/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/resolve/internal/Maven31DependencyResolver.java b/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/resolve/internal/Maven31DependencyResolver.java
index e2c528b..0b2ac9a 100644
--- a/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/resolve/internal/Maven31DependencyResolver.java
+++ b/maven-artifact-transfer/src/main/java/org/apache/maven/shared/dependencies/resolve/internal/Maven31DependencyResolver.java
@@ -27,13 +27,14 @@
import org.apache.maven.RepositoryUtils;
import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
+import org.apache.maven.model.DependencyManagement;
+import org.apache.maven.model.Model;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.artifact.filter.resolve.TransformableFilter;
import org.apache.maven.shared.artifact.filter.resolve.transform.EclipseAetherFilterTransformer;
import org.apache.maven.shared.dependencies.DependableCoordinate;
import org.apache.maven.shared.dependencies.resolve.DependencyResolver;
import org.apache.maven.shared.dependencies.resolve.DependencyResolverException;
-import org.apache.maven.shared.project.ProjectCoordinate;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
import org.eclipse.aether.RepositorySystem;
@@ -92,18 +93,18 @@
@Override
// CHECKSTYLE_OFF: LineLength
public Iterable<org.apache.maven.shared.artifact.resolve.ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest,
- ProjectCoordinate root,
+ Model model,
TransformableFilter dependencyFilter )
// CHECKSTYLE_ON: LineLength
throws DependencyResolverException
{
// Are there examples where packaging and type are NOT in sync
- ArtifactHandler artifactHandler = artifactHandlerManager.getArtifactHandler( root.getPackaging() );
+ ArtifactHandler artifactHandler = artifactHandlerManager.getArtifactHandler( model.getPackaging() );
String extension = artifactHandler != null ? artifactHandler.getExtension() : null;
Artifact aetherArtifact =
- new DefaultArtifact( root.getGroupId(), root.getArtifactId(), extension, root.getVersion() );
+ new DefaultArtifact( model.getGroupId(), model.getArtifactId(), extension, model.getVersion() );
Dependency aetherRoot = new Dependency( aetherArtifact, null );
@@ -113,6 +114,31 @@
buildingRequest.getRemoteRepositories() );
CollectRequest request = new CollectRequest( aetherRoot, aetherRepositories );
+
+ ArtifactTypeRegistry typeRegistry =
+ (ArtifactTypeRegistry) Invoker.invoke( RepositoryUtils.class, "newArtifactTypeRegistry",
+ ArtifactHandlerManager.class, artifactHandlerManager );
+
+ List<Dependency> aetherDependencies = new ArrayList<Dependency>( model.getDependencies().size() );
+ for ( org.apache.maven.model.Dependency mavenDependency : model.getDependencies() )
+ {
+ aetherDependencies.add( toDependency( mavenDependency, typeRegistry ) );
+ }
+ request.setDependencies( aetherDependencies );
+
+ DependencyManagement mavenDependencyManagement = model.getDependencyManagement();
+ if ( mavenDependencyManagement != null )
+ {
+ List<Dependency> aetherManagerDependencies =
+ new ArrayList<Dependency>( mavenDependencyManagement.getDependencies().size() );
+
+ for ( org.apache.maven.model.Dependency mavenDependency : mavenDependencyManagement.getDependencies() )
+ {
+ aetherManagerDependencies.add( toDependency( mavenDependency, typeRegistry ) );
+ }
+
+ request.setManagedDependencies( aetherManagerDependencies );
+ }
return resolveDependencies( buildingRequest, aetherRepositories, dependencyFilter, request );
}
@@ -247,4 +273,14 @@
return new Dependency( artifact, null );
}
+
+ private static Dependency toDependency( org.apache.maven.model.Dependency root, ArtifactTypeRegistry typeRegistry )
+ throws DependencyResolverException
+ {
+ Class<?>[] argClasses = new Class<?>[] { org.apache.maven.model.Dependency.class, ArtifactTypeRegistry.class };
+
+ Object[] args = new Object[] { root, typeRegistry };
+
+ return (Dependency) Invoker.invoke( RepositoryUtils.class, "toDependency", argClasses, args );
+ }
}