in src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java [1558:1674]
private void runBuild(
File projectsDir,
BuildJob buildJob,
File settingsFile,
File actualJavaHome,
CharSequence actualJreVersion,
Properties globalInvokerProperties)
throws MojoExecutionException {
// FIXME: Think about the following code part -- START
File pomFile = new File(projectsDir, buildJob.getProject());
File basedir;
if (pomFile.isDirectory()) {
basedir = pomFile;
pomFile = new File(basedir, "pom.xml");
if (!pomFile.exists()) {
pomFile = null;
} else {
buildJob.setProject(buildJob.getProject() + File.separator + "pom.xml");
}
} else {
basedir = pomFile.getParentFile();
}
File interpolatedPomFile = interpolatePomFile(pomFile, basedir);
// FIXME: Think about the following code part -- ^^^^^^^ END
getLog().info(buffer().a("Building: ").strong(buildJob.getProject()).build());
InvokerProperties invokerProperties = getInvokerProperties(basedir, globalInvokerProperties);
// let's set what details we can
buildJob.setName(invokerProperties.getJobName());
buildJob.setDescription(invokerProperties.getJobDescription());
try {
int selection = getSelection(invokerProperties, actualJreVersion);
if (selection == 0) {
long startTime = System.currentTimeMillis();
boolean executed;
FileLogger buildLogger = setupBuildLogFile(basedir);
if (buildLogger != null) {
buildJob.setBuildlog(buildLogger.getOutputFile().getAbsolutePath());
}
try {
executed = runBuild(
basedir, interpolatedPomFile, settingsFile, actualJavaHome, invokerProperties, buildLogger);
} finally {
long elapsedTime = System.currentTimeMillis() - startTime;
buildJob.setTime(elapsedTime / ONE_SECOND);
if (buildLogger != null) {
buildLogger.close();
}
}
if (executed) {
buildJob.setResult(BuildJob.Result.SUCCESS);
if (!suppressSummaries) {
getLog().info(pad(buildJob).success("SUCCESS").a(' ') + "("
+ formatElapsedTime(buildJob.getTime()) + ")");
}
} else {
buildJob.setResult(BuildJob.Result.SKIPPED);
if (!suppressSummaries) {
getLog().info(pad(buildJob).warning("SKIPPED").a(' ') + "("
+ formatElapsedTime(buildJob.getTime()) + ")");
}
}
} else {
buildJob.setResult(BuildJob.Result.SKIPPED);
List<String> messages = new ArrayList<>();
if (selection == Selector.SELECTOR_MULTI) {
messages.add("non-matching selectors");
} else {
if ((selection & Selector.SELECTOR_MAVENVERSION) != 0) {
messages.add("Maven version");
}
if ((selection & Selector.SELECTOR_JREVERSION) != 0) {
messages.add("JRE version");
}
if ((selection & Selector.SELECTOR_OSFAMILY) != 0) {
messages.add("OS");
}
if ((selection & Selector.SELECTOR_TOOLCHAIN) != 0) {
messages.add("Toolchain");
}
}
String message = String.join(", ", messages);
if (!suppressSummaries) {
getLog().info(pad(buildJob).warning("SKIPPED") + " due to " + message);
}
// Abuse failureMessage, the field in the report which should contain the reason for skipping
// Consider skipCode + I18N
buildJob.setFailureMessage("Skipped due to " + message);
}
} catch (RunFailureException e) {
buildJob.setResult(e.getType());
buildJob.setFailureMessage(e.getMessage());
if (!suppressSummaries) {
getLog().info(" " + e.getMessage());
getLog().info(pad(buildJob).failure("FAILED").a(' ') + "(" + formatElapsedTime(buildJob.getTime())
+ ")");
}
} finally {
deleteInterpolatedPomFile(interpolatedPomFile);
writeBuildReport(buildJob);
}
}