You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2021/06/04 08:54:36 UTC
[maven-dependency-tree] 01/01: [MSHARED-491]
DependencyGraphBuilders shouldn't need reactorProjects for resolving
dependencies
This is an automated email from the ASF dual-hosted git repository.
rfscholte pushed a commit to branch MSHARED-491
in repository https://gitbox.apache.org/repos/asf/maven-dependency-tree.git
commit b5e9f99802c45b4f0a526c506e11964a61211d89
Author: rfscholte <rf...@apache.org>
AuthorDate: Fri Jun 4 10:54:19 2021 +0200
[MSHARED-491] DependencyGraphBuilders shouldn't need reactorProjects for resolving dependencies
---
.../dependency/graph/DependencyGraphBuilder.java | 17 +++--
.../internal/DefaultDependencyGraphBuilder.java | 20 +-----
.../internal/Maven31DependencyGraphBuilder.java | 81 ++-------------------
.../internal/Maven3DependencyGraphBuilder.java | 83 ++--------------------
4 files changed, 17 insertions(+), 184 deletions(-)
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java b/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java
index e0e5fe9..cab4ce8 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java
@@ -45,20 +45,19 @@ public interface DependencyGraphBuilder
throws DependencyGraphBuilderException;
/**
- * Build the dependency graph, with a hack to include dependencies contained in the reactor projects
- * but that are not yet compiled, which is the minimum prerequisite for Maven core's
- * ReactorReader to find them. Notice that this hack hasn't been done for Maven 2.
- * <p>Notice: If Maven core did collect instead of resolving dependencies (ie did not try to get the
- * artifacts but only the poms), probably this hack wouldn't be necessary even for people requiring
- * the dependency graph before compiling. TODO: for Maven 3, use Aether to collect dependencies.</p>
*
* @param buildingRequest the buildingRequest
* @param filter artifact filter (can be <code>null</code>)
- * @param reactorProjects Collection of those projects contained in the reactor (can be <code>null</code>).
+ * @param reactorProjects ignored
* @return the dependency graph
* @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
+ * @deprecated Use {@link #buildDependencyGraph(ProjectBuildingRequest, ArtifactFilter)} instead
*/
- DependencyNode buildDependencyGraph( ProjectBuildingRequest buildingRequest, ArtifactFilter filter,
+ @Deprecated
+ default DependencyNode buildDependencyGraph( ProjectBuildingRequest buildingRequest, ArtifactFilter filter,
Collection<MavenProject> reactorProjects )
- throws DependencyGraphBuilderException;
+ throws DependencyGraphBuilderException
+ {
+ return buildDependencyGraph( buildingRequest, filter );
+ }
}
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 593c057..cccd577 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
@@ -34,8 +34,6 @@ import org.codehaus.plexus.context.ContextException;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
-import java.util.Collection;
-
/**
* Default dependency graph builder that detects current Maven version to delegate to either Maven 3.0 or 3.1+ specific
* code.
@@ -64,22 +62,6 @@ public class DefaultDependencyGraphBuilder
public DependencyNode buildDependencyGraph( ProjectBuildingRequest buildingRequest, ArtifactFilter filter )
throws DependencyGraphBuilderException
{
- return buildDependencyGraph( buildingRequest, filter, null );
- }
-
- /**
- * Builds a dependency graph.
- *
- * @param filter artifact filter (can be <code>null</code>)
- * @param reactorProjects Collection of those projects contained in the reactor (can be <code>null</code>)
- * @return DependencyNode containing the dependency graph.
- * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
- */
- @Override
- public DependencyNode buildDependencyGraph( ProjectBuildingRequest buildingRequest, ArtifactFilter filter,
- Collection<MavenProject> reactorProjects )
- throws DependencyGraphBuilderException
- {
try
{
String hint = isMaven31() ? "maven31" : "maven3";
@@ -95,7 +77,7 @@ public class DefaultDependencyGraphBuilder
+ effectiveGraphBuilder.getClass().getSimpleName() );
}
- return effectiveGraphBuilder.buildDependencyGraph( buildingRequest, filter, reactorProjects );
+ return effectiveGraphBuilder.buildDependencyGraph( buildingRequest, filter );
}
catch ( ComponentLookupException e )
{
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 9e8089f..0b89e02 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
@@ -22,11 +22,8 @@ package org.apache.maven.shared.dependency.graph.internal;
import static org.eclipse.aether.util.graph.manager.DependencyManagerUtils.NODE_DATA_PREMANAGED_VERSION;
import java.util.ArrayList;
-import java.util.Collection;
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.Artifact;
@@ -93,24 +90,6 @@ public class Maven31DependencyGraphBuilder
public DependencyNode buildDependencyGraph( ProjectBuildingRequest buildingRequest, ArtifactFilter filter )
throws DependencyGraphBuilderException
{
- return buildDependencyGraph( buildingRequest, filter, null );
- }
-
- /**
- * Builds the dependency graph for Maven 3.1+, eventually hacking for collecting projects from
- * reactor not yet built.
- *
- * @param buildingRequest the buildingRequest
- * @param filter artifact filter (can be <code>null</code>)
- * @param reactorProjects Collection of those projects contained in the reactor (can be <code>null</code>).
- * @return DependencyNode containing the dependency graph.
- * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
- */
- @Override
- public DependencyNode buildDependencyGraph( ProjectBuildingRequest buildingRequest, ArtifactFilter filter,
- Collection<MavenProject> reactorProjects )
- throws DependencyGraphBuilderException
- {
MavenProject project = buildingRequest.getProject();
RepositorySystemSession session =
@@ -139,7 +118,7 @@ public class Maven31DependencyGraphBuilder
};
Invoker.invoke( request, "setResolutionFilter", DependencyFilter.class, collectFilter );
- final DependencyResolutionResult result = resolveDependencies( request, reactorProjects );
+ final DependencyResolutionResult result = resolveDependencies( request );
org.eclipse.aether.graph.DependencyNode graph =
(org.eclipse.aether.graph.DependencyNode) Invoker.invoke( DependencyResolutionResult.class, result,
"getDependencyGraph", exceptionHandler );
@@ -147,8 +126,7 @@ public class Maven31DependencyGraphBuilder
return buildDependencyNode( null, graph, project.getArtifact(), filter );
}
- private DependencyResolutionResult resolveDependencies( DependencyResolutionRequest request,
- Collection<MavenProject> reactorProjects )
+ private DependencyResolutionResult resolveDependencies( DependencyResolutionRequest request )
throws DependencyGraphBuilderException
{
try
@@ -157,62 +135,11 @@ public class Maven31DependencyGraphBuilder
}
catch ( DependencyResolutionException e )
{
- if ( reactorProjects == null )
- {
- throw new DependencyGraphBuilderException( "Could not resolve following dependencies: "
- + e.getResult().getUnresolvedDependencies(), e );
- }
-
- // try collecting from reactor
- return collectDependenciesFromReactor( e, reactorProjects );
+ throw new DependencyGraphBuilderException( "Could not resolve following dependencies: "
+ + e.getResult().getUnresolvedDependencies(), e );
}
}
- private DependencyResolutionResult collectDependenciesFromReactor( DependencyResolutionException e,
- Collection<MavenProject> reactorProjects )
- throws DependencyGraphBuilderException
- {
- DependencyResolutionResult result = e.getResult();
-
- List<Dependency> reactorDeps = getReactorDependencies( reactorProjects, result.getUnresolvedDependencies() );
- result.getUnresolvedDependencies().removeAll( reactorDeps );
- Invoker.invoke( result.getResolvedDependencies(), "addAll", Collection.class, reactorDeps );
-
- if ( !result.getUnresolvedDependencies().isEmpty() )
- {
- throw new DependencyGraphBuilderException( "Could not resolve nor collect following dependencies: "
- + result.getUnresolvedDependencies(), e );
- }
-
- return result;
- }
-
- private List<Dependency> getReactorDependencies( Collection<MavenProject> reactorProjects, List<?> dependencies )
- {
- Set<ArtifactKey> reactorProjectsIds = new HashSet<ArtifactKey>();
- for ( MavenProject project : reactorProjects )
- {
- reactorProjectsIds.add( new ArtifactKey( project ) );
- }
-
- List<Dependency> reactorDeps = new ArrayList<Dependency>();
- for ( Object untypedDependency : dependencies )
- {
- Dependency dependency = (Dependency) untypedDependency;
- org.eclipse.aether.artifact.Artifact depArtifact = dependency.getArtifact();
-
- ArtifactKey key =
- new ArtifactKey( depArtifact.getGroupId(), depArtifact.getArtifactId(), depArtifact.getVersion() );
-
- if ( reactorProjectsIds.contains( key ) )
- {
- reactorDeps.add( dependency );
- }
- }
-
- return reactorDeps;
- }
-
private Artifact getDependencyArtifact( Dependency dep )
{
org.eclipse.aether.artifact.Artifact artifact = dep.getArtifact();
diff --git a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java b/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java
index 3eedffd..b22ec44 100644
--- a/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java
+++ b/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java
@@ -20,11 +20,8 @@ package org.apache.maven.shared.dependency.graph.internal;
*/
import java.util.ArrayList;
-import java.util.Collection;
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.Artifact;
@@ -73,24 +70,6 @@ public class Maven3DependencyGraphBuilder
public DependencyNode buildDependencyGraph( ProjectBuildingRequest buildingRequest, ArtifactFilter filter )
throws DependencyGraphBuilderException
{
- return buildDependencyGraph( buildingRequest, filter, null );
- }
-
- /**
- * Builds the dependency graph for Maven 3, eventually hacking for collecting projects from
- * reactor not yet built.
- *
- * @param buildingRequest the buildingRequest
- * @param filter artifact filter (can be <code>null</code>)
- * @param reactorProjects Collection of those projects contained in the reactor (can be <code>null</code>).
- * @return DependencyNode containing the dependency graph.
- * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
- */
- @Override
- public DependencyNode buildDependencyGraph( ProjectBuildingRequest buildingRequest, ArtifactFilter filter,
- Collection<MavenProject> reactorProjects )
- throws DependencyGraphBuilderException
- {
MavenProject project = buildingRequest.getProject();
DependencyResolutionRequest request =
@@ -108,13 +87,12 @@ public class Maven3DependencyGraphBuilder
};
request.setResolutionFilter( collectFilter );
- DependencyResolutionResult result = resolveDependencies( request, reactorProjects );
+ DependencyResolutionResult result = resolveDependencies( request );
return buildDependencyNode( null, result.getDependencyGraph(), project.getArtifact(), filter );
}
- private DependencyResolutionResult resolveDependencies( DependencyResolutionRequest request,
- Collection<MavenProject> reactorProjects )
+ private DependencyResolutionResult resolveDependencies( DependencyResolutionRequest request )
throws DependencyGraphBuilderException
{
try
@@ -123,62 +101,9 @@ public class Maven3DependencyGraphBuilder
}
catch ( DependencyResolutionException e )
{
- if ( reactorProjects == null )
- {
- throw new DependencyGraphBuilderException( "Could not resolve following dependencies: "
- + e.getResult().getUnresolvedDependencies(), e );
- }
-
- // try collecting from reactor
- return collectDependenciesFromReactor( e, reactorProjects );
- }
- }
-
- private DependencyResolutionResult collectDependenciesFromReactor( DependencyResolutionException e,
- Collection<MavenProject> reactorProjects )
- throws DependencyGraphBuilderException
- {
- DependencyResolutionResult result = e.getResult();
-
- List<Dependency> reactorDeps = getReactorDependencies( reactorProjects, result.getUnresolvedDependencies() );
-
- result.getUnresolvedDependencies().removeAll( reactorDeps );
- result.getResolvedDependencies().addAll( reactorDeps );
-
- if ( !result.getUnresolvedDependencies().isEmpty() )
- {
- throw new DependencyGraphBuilderException( "Could not resolve nor collect following dependencies: "
- + result.getUnresolvedDependencies(), e );
+ throw new DependencyGraphBuilderException( "Could not resolve following dependencies: "
+ + e.getResult().getUnresolvedDependencies(), e );
}
-
- return result;
- }
-
- private List<org.sonatype.aether.graph.Dependency> getReactorDependencies( Collection<MavenProject> reactorProjects,
- List<?> dependencies )
- {
- Set<ArtifactKey> reactorProjectsIds = new HashSet<ArtifactKey>();
- for ( MavenProject project : reactorProjects )
- {
- reactorProjectsIds.add( new ArtifactKey( project ) );
- }
-
- List<Dependency> reactorDeps = new ArrayList<Dependency>();
- for ( Object untypedDependency : dependencies )
- {
- Dependency dependency = (Dependency) untypedDependency;
- org.sonatype.aether.artifact.Artifact depArtifact = dependency.getArtifact();
-
- ArtifactKey key =
- new ArtifactKey( depArtifact.getGroupId(), depArtifact.getArtifactId(), depArtifact.getVersion() );
-
- if ( reactorProjectsIds.contains( key ) )
- {
- reactorDeps.add( dependency );
- }
- }
-
- return reactorDeps;
}
private Artifact getDependencyArtifact( Dependency dep )