diff --git a/src/main/java/org/codehaus/plexus/util/AbstractScanner.java b/src/main/java/org/codehaus/plexus/util/AbstractScanner.java
index d650c6df..eb3ffb60 100644
--- a/src/main/java/org/codehaus/plexus/util/AbstractScanner.java
+++ b/src/main/java/org/codehaus/plexus/util/AbstractScanner.java
@@ -29,7 +29,7 @@ public abstract class AbstractScanner implements Scanner {
* Patterns which should be excluded by default, like SCM files
*
* - Misc: **/*~, **/#*#, **/.#*, **/%*%, **/._*
- * - CVS: **/CVS, **/CVS/**, **/.cvsignore
+ * - CVS: **/CVS, **/CVS/**
* - RCS: **/RCS, **/RCS/**
* - SCCS: **/SCCS, **/SCCS/**
* - VSSercer: **/vssver.scc
@@ -41,7 +41,7 @@ public abstract class AbstractScanner implements Scanner {
* - Mac: **/.DS_Store
* - Serena Dimension: **/.metadata, **/.metadata/**
* - Mercurial: **/.hg, **/.hg/**
- * - Git: **/.git, **/.git/**, **/.gitignore
+ * - Git: **/.git, **/.git/**
* - Bitkeeper: **/BitKeeper, **/BitKeeper/**, **/ChangeSet,
* **/ChangeSet/**
* - Darcs: **/_darcs, **/_darcs/**, **/.darcsrepo,
@@ -61,7 +61,6 @@ public abstract class AbstractScanner implements Scanner {
// CVS
"**/CVS",
"**/CVS/**",
- "**/.cvsignore",
// RCS
"**/RCS",
@@ -106,7 +105,6 @@ public abstract class AbstractScanner implements Scanner {
// git
"**/.git",
"**/.git/**",
- "**/.gitignore",
// BitKeeper
"**/BitKeeper",
diff --git a/src/test/java/org/codehaus/plexus/util/DirectoryScannerTest.java b/src/test/java/org/codehaus/plexus/util/DirectoryScannerTest.java
index fa5ed661..303c7115 100644
--- a/src/test/java/org/codehaus/plexus/util/DirectoryScannerTest.java
+++ b/src/test/java/org/codehaus/plexus/util/DirectoryScannerTest.java
@@ -536,6 +536,20 @@ void isParentSymbolicLink() throws Exception {
ds.isParentSymbolicLink(new File(directory, "symLinkToDirOnTheOutside"), "FileInDirOnTheOutside.txt"));
}
+ @Test
+ void defaultExcludes() throws Exception {
+ DirectoryScanner ds = new DirectoryScanner();
+ // work in src directory as target has filtering already applied with outdated default excludes
+ // (https://maven.apache.org/plugins/maven-resources-plugin/resources-mojo.html#addDefaultExcludes)
+ ds.setBasedir(new File("src/test/resources/directory-scanner-default-excludes").getCanonicalFile());
+
+ ds.addDefaultExcludes();
+ ds.scan();
+
+ assertInclusionsAndExclusions(
+ ds.getIncludedFiles(), new String[] {}, ".gitignore", ".gitattributes", ".cvsignore");
+ }
+
private void printTestHeader() {
StackTraceElement ste = new Throwable().getStackTrace()[1];
System.out.println("Test: " + ste.getMethodName());
diff --git a/src/test/resources/directory-scanner-default-excludes/.cvsignore b/src/test/resources/directory-scanner-default-excludes/.cvsignore
new file mode 100644
index 00000000..6dc1c9df
--- /dev/null
+++ b/src/test/resources/directory-scanner-default-excludes/.cvsignore
@@ -0,0 +1 @@
+# must not be excluded, otherwise the project will not work
\ No newline at end of file
diff --git a/src/test/resources/directory-scanner-default-excludes/.gitattributes b/src/test/resources/directory-scanner-default-excludes/.gitattributes
new file mode 100644
index 00000000..41674463
--- /dev/null
+++ b/src/test/resources/directory-scanner-default-excludes/.gitattributes
@@ -0,0 +1 @@
+# must not be excluded
\ No newline at end of file
diff --git a/src/test/resources/directory-scanner-default-excludes/.gitignore b/src/test/resources/directory-scanner-default-excludes/.gitignore
new file mode 100644
index 00000000..41674463
--- /dev/null
+++ b/src/test/resources/directory-scanner-default-excludes/.gitignore
@@ -0,0 +1 @@
+# must not be excluded
\ No newline at end of file