From ffdc2ed0310e116c5791eb473bb5e98bd2c0e87b Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Mon, 16 Jan 2023 14:13:55 +0100 Subject: [PATCH] [MNG-7667] Fix DownloadMojo to properly resolve (#236) The m-p-p depends on m-p-tools-ant and m-p-tools-beanshell as runtime/optional, and the way DownloadMojo resolves every artifact causes that OptionalDependencySelector filter these out even at "collection" stage (as depth >= 2). Hence, fix DownloadMojo to resolve properly, that actually shifts all the tree "one level up", and hence result is same as in Maven, as the optional dependencies become "first level sibling". --- https://issues.apache.org/jira/browse/MNG-7667 --- .../maven/its/bootstrap/DownloadMojo.java | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/core-it-support/maven-it-plugin-bootstrap/src/main/java/org/apache/maven/its/bootstrap/DownloadMojo.java b/core-it-support/maven-it-plugin-bootstrap/src/main/java/org/apache/maven/its/bootstrap/DownloadMojo.java index 018c973a3..3f41bb5a3 100644 --- a/core-it-support/maven-it-plugin-bootstrap/src/main/java/org/apache/maven/its/bootstrap/DownloadMojo.java +++ b/core-it-support/maven-it-plugin-bootstrap/src/main/java/org/apache/maven/its/bootstrap/DownloadMojo.java @@ -23,13 +23,11 @@ import java.io.File; import java.io.FileReader; import java.io.IOException; -import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; import org.apache.maven.RepositoryUtils; -import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager; import org.apache.maven.execution.MavenSession; import org.apache.maven.model.Dependency; import org.apache.maven.model.Plugin; @@ -42,7 +40,6 @@ import org.apache.maven.project.ProjectBuildingRequest; import org.eclipse.aether.RepositorySystem; import org.eclipse.aether.RepositorySystemSession; -import org.eclipse.aether.artifact.ArtifactTypeRegistry; import org.eclipse.aether.collection.CollectRequest; import org.eclipse.aether.repository.RemoteRepository; import org.eclipse.aether.resolution.DependencyRequest; @@ -80,9 +77,6 @@ public class DownloadMojo @Component private MavenSession session; - @Component - private ArtifactHandlerManager artifactHandlerManager; - @Override public void execute() throws MojoFailureException { @@ -123,16 +117,17 @@ public void execute() throws MojoFailureException ProjectBuildingRequest projectBuildingRequest = session.getProjectBuildingRequest(); RepositorySystemSession repositorySystemSession = projectBuildingRequest.getRepositorySession(); List repos = RepositoryUtils.toRepos( projectBuildingRequest.getRemoteRepositories() ); - ArtifactTypeRegistry registry = RepositoryUtils.newArtifactTypeRegistry( artifactHandlerManager ); + for ( Dependency dependency : dependencies ) { try { - org.eclipse.aether.graph.Dependency dep = RepositoryUtils.toDependency( dependency, registry ); - DependencyRequest request = new DependencyRequest( - new CollectRequest( Collections.singletonList( dep ), Collections.emptyList(), repos ), - null ); - System.out.println( "Resolving: " + dep.getArtifact() ); + org.eclipse.aether.graph.Dependency root = RepositoryUtils.toDependency( + dependency, repositorySystemSession.getArtifactTypeRegistry() ); + CollectRequest collectRequest = new CollectRequest( root, null, repos ); + collectRequest.setRequestContext( "bootstrap" ); + DependencyRequest request = new DependencyRequest( collectRequest, null ) ; + System.out.println( "Resolving: " + root.getArtifact() ); repositorySystem.resolveDependencies( repositorySystemSession, request ); } catch ( Exception e )