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/20 09:53:14 UTC

(maven-dependency-plugin) 02/02: [MDEP-496] Keep default-excluded entries for includes-only unpacks

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 365dd0b2bffeda3139b2c3eb51404e89b365803c
Author: Sylwester Lachiewicz <sl...@apache.org>
AuthorDate: Tue Oct 13 23:59:14 2026 +0200

    [MDEP-496] Keep default-excluded entries for includes-only unpacks
    
    setUseDefaultExcludes() recomputes the exclude patterns, so calling it for a selector without excludes dropped .svn and .git entries that were extracted before. Call it only when excludes are set.
---
 .../org/apache/maven/plugins/dependency/utils/UnpackUtil.java    | 7 ++++---
 .../dependency/fromConfiguration/TestUnpackDefaultExcludes.java  | 9 +++++++++
 .../fromDependencies/TestUnpackDependenciesDefaultExcludes.java  | 9 +++++++++
 3 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/apache/maven/plugins/dependency/utils/UnpackUtil.java b/src/main/java/org/apache/maven/plugins/dependency/utils/UnpackUtil.java
index ed9152ee..47253334 100644
--- a/src/main/java/org/apache/maven/plugins/dependency/utils/UnpackUtil.java
+++ b/src/main/java/org/apache/maven/plugins/dependency/utils/UnpackUtil.java
@@ -165,10 +165,11 @@ public class UnpackUtil {
                 IncludeExcludeFileSelector[] selectors =
                         new IncludeExcludeFileSelector[] {new IncludeExcludeFileSelector()};
 
-                // must precede setExcludes(), which computes the effective exclude patterns
-                selectors[0].setUseDefaultExcludes(useDefaultExcludes);
-
                 if (excludes != null && !excludes.isEmpty()) {
+                    // Only here: setUseDefaultExcludes() recomputes the exclude patterns, so calling it for an
+                    // includes-only selector would start dropping .svn, .git and so on, which were extracted so far.
+                    // It also has to precede setExcludes().
+                    selectors[0].setUseDefaultExcludes(useDefaultExcludes);
                     selectors[0].setExcludes(excludes.split(","));
                 }
 
diff --git a/src/test/java/org/apache/maven/plugins/dependency/fromConfiguration/TestUnpackDefaultExcludes.java b/src/test/java/org/apache/maven/plugins/dependency/fromConfiguration/TestUnpackDefaultExcludes.java
index c47c1eea..027c3d1f 100644
--- a/src/test/java/org/apache/maven/plugins/dependency/fromConfiguration/TestUnpackDefaultExcludes.java
+++ b/src/test/java/org/apache/maven/plugins/dependency/fromConfiguration/TestUnpackDefaultExcludes.java
@@ -93,4 +93,13 @@ class TestUnpackDefaultExcludes {
         assertFalse(new File(mojo.getOutputDirectory(), "dropped.log").exists());
         assertTrue(new File(mojo.getOutputDirectory(), ".svn/entries").exists());
     }
+
+    @Test
+    @InjectMojo(goal = "unpack")
+    void testIncludesOnlyKeepsDefaultExcludedEntries(UnpackMojo mojo) throws Exception {
+        mojo.setIncludes("**/*");
+        mojo.execute();
+        assertTrue(new File(mojo.getOutputDirectory(), "kept.txt").exists());
+        assertTrue(new File(mojo.getOutputDirectory(), ".svn/entries").exists());
+    }
 }
diff --git a/src/test/java/org/apache/maven/plugins/dependency/fromDependencies/TestUnpackDependenciesDefaultExcludes.java b/src/test/java/org/apache/maven/plugins/dependency/fromDependencies/TestUnpackDependenciesDefaultExcludes.java
index 5e1a931f..f7a657c4 100644
--- a/src/test/java/org/apache/maven/plugins/dependency/fromDependencies/TestUnpackDependenciesDefaultExcludes.java
+++ b/src/test/java/org/apache/maven/plugins/dependency/fromDependencies/TestUnpackDependenciesDefaultExcludes.java
@@ -88,4 +88,13 @@ class TestUnpackDependenciesDefaultExcludes {
         assertFalse(new File(mojo.getOutputDirectory(), "dropped.log").exists());
         assertTrue(new File(mojo.getOutputDirectory(), ".svn/entries").exists());
     }
+
+    @Test
+    @InjectMojo(goal = "unpack-dependencies")
+    void testIncludesOnlyKeepsDefaultExcludedEntries(UnpackDependenciesMojo mojo) throws Exception {
+        mojo.setIncludes("**/*");
+        mojo.execute();
+        assertTrue(new File(mojo.getOutputDirectory(), "kept.txt").exists());
+        assertTrue(new File(mojo.getOutputDirectory(), ".svn/entries").exists());
+    }
 }