in src/main/java/org/apache/sling/maven/bundlesupport/ValidationMojo.java [89:155]
public void execute() throws MojoExecutionException, MojoFailureException {
if (this.skip) {
getLog().info("Validation is skipped.");
return;
}
final Iterator<Resource> rsrcIterator = this.project.getResources().iterator();
while (rsrcIterator.hasNext()) {
final Resource rsrc = rsrcIterator.next();
final File directory = new File(rsrc.getDirectory());
if (directory.exists()) {
if (!buildContext.hasDelta(directory)) {
getLog().debug("No files found to validate, skipping.");
return;
}
getLog().debug("Scanning " + rsrc.getDirectory());
final Scanner scanner = buildContext.newScanner(directory);
if (rsrc.getExcludes() != null && rsrc.getExcludes().size() > 0) {
scanner.setExcludes((String[]) rsrc.getExcludes()
.toArray(new String[rsrc.getExcludes().size()]));
}
scanner.addDefaultExcludes();
if (rsrc.getIncludes() != null && rsrc.getIncludes().size() > 0) {
scanner.setIncludes((String[]) rsrc.getIncludes()
.toArray(new String[rsrc.getIncludes().size()]));
}
scanner.scan();
final String[] files = scanner.getIncludedFiles();
int countProcessed = 0;
List<Exception> failures = new ArrayList<>();
if (files != null) {
for (int m = 0; m < files.length; m++) {
final File file = new File(directory, files[m]);
buildContext.removeMessages(file);
try {
this.validate(file);
} catch (Exception ex) {
failures.add(ex);
buildContext.addMessage(
file,
parseLineNumber(ex.getMessage()),
parseColumnNumber(ex.getMessage()),
cleanupMessage(ex.getMessage()),
BuildContext.SEVERITY_ERROR,
ex.getCause());
}
countProcessed++;
}
}
if (!failures.isEmpty()) {
if (!buildContext.isIncremental()) {
throw new MojoFailureException(
"Validated " + countProcessed + " file(s), found " + failures.size() + " failures.");
}
} else {
getLog().info("Validated " + countProcessed + " file(s).");
}
}
}
}