in src/main/java/org/apache/maven/shared/model/fileset/util/FileSetManager.java [273:319]
private Set<String> findDeletableDirectories(FileSet fileSet) {
if (verbose) {
logger.info("Scanning for deletable directories.");
}
DirectoryScanner scanner = scan(fileSet);
if (scanner == null) {
return Collections.emptySet();
}
Set<String> includes = new HashSet<>(Arrays.asList(scanner.getIncludedDirectories()));
List<String> excludes = new ArrayList<>(Arrays.asList(scanner.getExcludedDirectories()));
List<String> linksForDeletion = new ArrayList<>();
if (!fileSet.isFollowSymlinks()) {
if (verbose) {
logger.info("Adding symbolic link dirs 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: " + includes);
logger.debug("Marked for preserve (with followSymlinks == false): " + excludes);
}
List<String> includedDirsAndSymlinks = Arrays.asList(scanner.getIncludedDirectories());
linksForDeletion.addAll(excludes);
linksForDeletion.retainAll(includedDirsAndSymlinks);
if (logger.isDebugEnabled()) {
logger.debug("Symlinks marked for deletion (originally mismarked): " + linksForDeletion);
}
excludes.removeAll(includedDirsAndSymlinks);
}
excludeParentDirectoriesOfExcludedPaths(excludes, includes);
includes.addAll(linksForDeletion);
return includes;
}