in src/main/java/org/apache/sling/maven/bundlesupport/ValidationMojo.java [89:153]
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).");
}
}
}
}