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