private void logSummaryOfDuplicates()

in src/main/java/org/apache/maven/plugins/shade/DefaultShader.java [474:532]


    private void logSummaryOfDuplicates(Map<Collection<File>, HashSet<String>> overlapping) {
        for (Collection<File> jarz : overlapping.keySet()) {
            List<String> jarzS = new ArrayList<>();

            for (File jjar : jarz) {
                jarzS.add(jjar.getName());
            }

            Collections.sort(jarzS); // deterministic messages to be able to compare outputs (useful on CI)

            List<String> classes = new LinkedList<>();
            List<String> resources = new LinkedList<>();

            for (String name : overlapping.get(jarz)) {
                if (name.endsWith(".class")) {
                    classes.add(name.replace(".class", "").replace("/", "."));
                } else {
                    resources.add(name);
                }
            }

            // CHECKSTYLE_OFF: LineLength
            final Collection<String> overlaps = new ArrayList<>();
            if (!classes.isEmpty()) {
                if (resources.size() == 1) {
                    overlaps.add("class");
                } else {
                    overlaps.add("classes");
                }
            }
            if (!resources.isEmpty()) {
                if (resources.size() == 1) {
                    overlaps.add("resource");
                } else {
                    overlaps.add("resources");
                }
            }

            final List<String> all = new ArrayList<>(classes.size() + resources.size());
            all.addAll(classes);
            all.addAll(resources);

            logger.warn(String.join(", ", jarzS) + " define " + all.size() + " overlapping "
                    + String.join(" and ", overlaps) + ": ");
            // CHECKSTYLE_ON: LineLength

            Collections.sort(all);

            int max = 10;

            for (int i = 0; i < Math.min(max, all.size()); i++) {
                logger.warn("  - " + all.get(i));
            }

            if (all.size() > max) {
                logger.warn("  - " + (all.size() - max) + " more...");
            }
        }
    }