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:35 UTC
[maven-dependency-tree] branch MSHARED-491 created (now b5e9f99)
This is an automated email from the ASF dual-hosted git repository.
rfscholte pushed a change to branch MSHARED-491
in repository https://gitbox.apache.org/repos/asf/maven-dependency-tree.git.
at b5e9f99 [MSHARED-491] DependencyGraphBuilders shouldn't need reactorProjects for resolving dependencies
This branch includes the following new commits:
new b5e9f99 [MSHARED-491] DependencyGraphBuilders shouldn't need reactorProjects for resolving dependencies
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[maven-dependency-tree] 01/01: [MSHARED-491]
DependencyGraphBuilders shouldn't need reactorProjects for resolving
dependencies
Posted by rf...@apache.org.
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 )