You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2026/10/19 13:37:48 UTC
(maven-dependency-plugin) 01/04: [MDEP-631] Include provided and test dependencies when purging
This is an automated email from the ASF dual-hosted git repository.
slachiewicz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-dependency-plugin.git
commit 8cc5d386c53b13ea51ebf1ca8dafd9b4ff13febc
Author: Sylwester Lachiewicz <sl...@apache.org>
AuthorDate: Tue Oct 13 22:50:14 2026 +0200
[MDEP-631] Include provided and test dependencies when purging
The collect root was a Dependency, so the session's DependencySelector treated the project's direct dependencies as transitive and dropped provided and test ones. Only PurgeLocalRepositoryMojo calls the five-argument overload; GoOfflineMojo uses the four-argument one, which already sets a root artifact.
---
src/it/projects/purge-local-repository/verify.groovy | 6 +++---
.../org/apache/maven/plugins/dependency/utils/ResolverUtil.java | 6 ++++--
.../apache/maven/plugins/dependency/utils/ResolverUtilTest.java | 9 +++------
3 files changed, 10 insertions(+), 11 deletions(-)
diff --git a/src/it/projects/purge-local-repository/verify.groovy b/src/it/projects/purge-local-repository/verify.groovy
index 6ffc8f1f..6895f8e2 100644
--- a/src/it/projects/purge-local-repository/verify.groovy
+++ b/src/it/projects/purge-local-repository/verify.groovy
@@ -30,10 +30,10 @@ void checkFilePresence( String path )
}
checkFileAbsence( "org/apache/maven/its/dependency/purged/1.0/purged-1.0.jar" )
-checkFilePresence( "org/apache/maven/its/dependency/not-purged-test/1.0/not-purged-test-1.0.jar" )
-checkFilePresence( "org/apache/maven/its/dependency/not-purged-provided/1.0/not-purged-provided-1.0.jar" )
+checkFileAbsence( "org/apache/maven/its/dependency/not-purged-test/1.0/not-purged-test-1.0.jar" )
+checkFileAbsence( "org/apache/maven/its/dependency/not-purged-provided/1.0/not-purged-provided-1.0.jar" )
checkFilePresence( "org/apache/maven/its/dependency/not-purged-optional/1.0/not-purged-optional-1.0.jar" )
String buildLog = new File( basedir, "build.log" ).getText( "UTF-8" )
-assert buildLog.contains( 'Deleting 1 transitive dependency for project test from ' )
+assert buildLog.contains( 'Deleting 3 transitive dependencies for project test from ' )
assert buildLog.contains( 'with artifact version resolution fuzziness' )
diff --git a/src/main/java/org/apache/maven/plugins/dependency/utils/ResolverUtil.java b/src/main/java/org/apache/maven/plugins/dependency/utils/ResolverUtil.java
index 52e71ad3..d92cd9fd 100644
--- a/src/main/java/org/apache/maven/plugins/dependency/utils/ResolverUtil.java
+++ b/src/main/java/org/apache/maven/plugins/dependency/utils/ResolverUtil.java
@@ -330,9 +330,11 @@ public class ResolverUtil {
List<RemoteRepository> remoteProjectRepositories,
DependencyFilter dependencyFilter)
throws DependencyResolutionException {
+ // The root is set as an artifact rather than as a dependency: a root dependency makes the session's
+ // DependencySelector treat the project's direct dependencies as transitive and drop provided and test ones.
CollectRequest collectRequest =
- new CollectRequest(new Dependency(rootArtifact, null), dependencies, remoteProjectRepositories);
- collectRequest.setManagedDependencies(managedDependencies);
+ new CollectRequest(dependencies, managedDependencies, remoteProjectRepositories);
+ collectRequest.setRootArtifact(rootArtifact);
return resolveDependencies(collectRequest, dependencyFilter);
}
diff --git a/src/test/java/org/apache/maven/plugins/dependency/utils/ResolverUtilTest.java b/src/test/java/org/apache/maven/plugins/dependency/utils/ResolverUtilTest.java
index 4b6f5e2c..e421ae5f 100644
--- a/src/test/java/org/apache/maven/plugins/dependency/utils/ResolverUtilTest.java
+++ b/src/test/java/org/apache/maven/plugins/dependency/utils/ResolverUtilTest.java
@@ -341,7 +341,7 @@ class ResolverUtilTest {
}
@Test
- void resolveDependenciesForArtifactWithFilter() throws Exception {
+ void resolveDependenciesForArtifactWithFilterKeepsDirectDependenciesOfAllScopes() throws Exception {
Artifact rootArtifact = new DefaultArtifact("org.apache.maven.plugins", "artifact", "jar", "1.0");
DependencyResult dependencyResult = new DependencyResult(new DependencyRequest());
when(sessionProvider.get()).thenReturn(mavenSession);
@@ -360,11 +360,8 @@ class ResolverUtilTest {
.resolveDependencies(
eq(repositorySystemSession),
argThat(request -> request.getFilter() == dependencyFilter
- && request.getCollectRequest().getRootArtifact() == null
- && request.getCollectRequest()
- .getRoot()
- .getArtifact()
- .equals(rootArtifact)));
+ && request.getCollectRequest().getRoot() == null
+ && request.getCollectRequest().getRootArtifact().equals(rootArtifact)));
}
@Test