private void printCompilationReport()

in src/main/java/org/apache/sling/maven/jspc/JspcMojo.java [624:703]


    private void printCompilationReport(DependencyTracker dependencyTracker) {
        StringBuilder report = new StringBuilder("JSP compilation report:\n\n");
        int pad = 10;
        Map<String, Set<String>> packageProviders = dependencyTracker.getPackageProviders();
        List<String> packages = new ArrayList<>(packageProviders.keySet());
        for (String packageName: packages) {
            pad = Math.max(pad, packageName.length());
        }
        pad += 2;
        report.append(StringUtils.rightPad("Package", pad)).append("Dependency");
        report.append("\n---------------------------------------------------------------\n");

        Collections.sort(packages);
        for (String packageName: packages) {
            report.append(StringUtils.rightPad(packageName, pad));
            Set<String> artifacts = packageProviders.get(packageName);
            if (artifacts == null || artifacts.isEmpty()) {
                report.append("n/a");
            } else {
                StringBuilder ids = new StringBuilder();
                for (String id: artifacts) {
                    if (ids.length() > 0) {
                        ids.append(", ");
                    }
                    ids.append(id);
                }
                report.append(ids);
            }
            report.append("\n");
        }

        // print the unused dependencies
        report.append("\n");
        Set<String> unusedDependencies = dependencyTracker.getUnusedDependencies();
        report.append(unusedDependencies.size()).append(" dependencies not used by JSPs:\n");
        if (!unusedDependencies.isEmpty()) {
            report.append("---------------------------------------------------------------\n");
            for (String id: unusedDependencies) {
                report.append(id).append("\n");
            }
        }

        // create the package list that are double defined
        int doubleDefined = 0;
        StringBuilder msg = new StringBuilder();
        for (String packageName: packages) {
            Set<String> a = packageProviders.get(packageName);
            if (a != null && a.size() > 1) {
                doubleDefined++;
                msg.append(StringUtils.rightPad(packageName, pad));
                msg.append(StringUtils.join(a.iterator(), ", ")).append("\n");
            }
        }
        report.append("\n");
        report.append(doubleDefined).append(" packages are defined by multiple dependencies:\n");
        if (doubleDefined > 0) {
            report.append("---------------------------------------------------------------\n");
            report.append(msg);
        }

        Map<String, Set<String>> jspDependencies = dependencyTracker.getJspDependencies();
        if (!jspDependencies.isEmpty()) {
            pad = 10;
            List<String> jspsWithDependencies = new ArrayList<>(jspDependencies.keySet());
            for (String jsp : jspsWithDependencies) {
                pad = Math.max(pad, jsp.length());
            }
            pad += 2;
            report.append("\n");
            report.append(StringUtils.rightPad("JSP", pad)).append("Dependencies");
            report.append("\n---------------------------------------------------------------\n");
            Collections.sort(jspsWithDependencies);
            for (String jsp : jspsWithDependencies) {
                report.append(StringUtils.rightPad(jsp, pad));
                report.append(String.join(", ", jspDependencies.get(jsp)));
            }

        }
        getLog().info(report);
    }