in src/main/java/org/apache/maven/shared/model/fileset/util/FileSetManager.java [321:368]
private Set<String> findDeletableFiles(FileSet fileSet, Set<String> deletableDirectories) {
if (verbose) {
logger.info("Re-scanning for deletable files.");
}
DirectoryScanner scanner = scan(fileSet);
if (scanner == null) {
return deletableDirectories;
}
deletableDirectories.addAll(Arrays.asList(scanner.getIncludedFiles()));
List<String> excludes = new ArrayList<>(Arrays.asList(scanner.getExcludedFiles()));
List<String> linksForDeletion = new ArrayList<>();
if (!fileSet.isFollowSymlinks()) {
if (verbose) {
logger.info(
"Adding symbolic link files which were previously excluded " + "to the list being deleted.");
}
// we need to see which entries were only excluded because they're symlinks...
scanner.setFollowSymlinks(true);
scanner.scan();
if (logger.isDebugEnabled()) {
logger.debug("Originally marked for delete: " + deletableDirectories);
logger.debug("Marked for preserve (with followSymlinks == false): " + excludes);
}
List<String> includedFilesAndSymlinks = Arrays.asList(scanner.getIncludedFiles());
linksForDeletion.addAll(excludes);
linksForDeletion.retainAll(includedFilesAndSymlinks);
if (logger.isDebugEnabled()) {
logger.debug("Symlinks marked for deletion (originally mismarked): " + linksForDeletion);
}
excludes.removeAll(includedFilesAndSymlinks);
}
excludeParentDirectoriesOfExcludedPaths(excludes, deletableDirectories);
deletableDirectories.addAll(linksForDeletion);
return deletableDirectories;
}