private Set findDeletableFiles()

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;
    }