in src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java [1788:1887]
private boolean runBuild(
File basedir,
File pomFile,
File settingsFile,
File actualJavaHome,
InvokerProperties invokerProperties,
FileLogger logger)
throws MojoExecutionException, RunFailureException {
if (getLog().isDebugEnabled() && !invokerProperties.getProperties().isEmpty()) {
Properties props = invokerProperties.getProperties();
getLog().debug("Using invoker properties:");
for (String key : new TreeSet<>(props.stringPropertyNames())) {
String value = props.getProperty(key);
getLog().debug(" " + key + " = " + value);
}
}
Map<String, Object> context = new LinkedHashMap<>();
boolean selectorResult = true;
try {
try {
scriptRunner.run("selector script", basedir, selectorScript, context, logger);
} catch (ScriptReturnException e) {
selectorResult = false;
return false;
} catch (ScriptException e) {
throw new RunFailureException(BuildJob.Result.ERROR, e);
}
try {
scriptRunner.run("pre-build script", basedir, preBuildHookScript, context, logger);
} catch (ScriptException e) {
throw new RunFailureException(BuildJob.Result.FAILURE_PRE_HOOK, e);
}
for (int invocationIndex = 1; ; invocationIndex++) {
if (invocationIndex > 1 && !invokerProperties.isInvocationDefined(invocationIndex)) {
break;
}
final InvocationRequest request = new DefaultInvocationRequest();
request.setBatchMode(true);
// values only from Mojo configurations
request.setLocalRepositoryDirectory(localRepositoryPath);
request.setShowErrors(showErrors);
request.setShowVersion(showVersion);
request.setJavaHome(actualJavaHome);
request.setMavenHome(mavenHome);
setupLoggerForBuildJob(logger, request);
request.setBaseDirectory(basedir);
request.setPomFile(pomFile);
String customSettingsFile = invokerProperties.getSettingsFile(invocationIndex);
if (customSettingsFile != null) {
File interpolateSettingsFile = interpolateSettings(new File(customSettingsFile));
File mergeSettingsFile = mergeSettings(interpolateSettingsFile);
request.setUserSettingsFile(mergeSettingsFile);
} else {
request.setUserSettingsFile(settingsFile);
}
Properties systemProperties =
getSystemProperties(basedir, invokerProperties.getSystemPropertiesFile(invocationIndex));
request.setProperties(systemProperties);
invokerProperties.configureInvocation(request, invocationIndex);
if (getLog().isDebugEnabled()) {
try {
getLog().debug("Using MAVEN_OPTS: " + request.getMavenOpts());
getLog().debug("Executing: " + new MavenCommandLineBuilder().build(request));
} catch (CommandLineConfigurationException e) {
getLog().debug("Failed to display command line: " + e.getMessage());
}
}
try {
InvocationResult result = invoker.execute(request);
verify(result, invocationIndex, invokerProperties, logger);
} catch (final MavenInvocationException e) {
getLog().debug("Error invoking Maven: " + e.getMessage(), e);
throw new RunFailureException(
"Maven invocation failed. " + e.getMessage(), BuildJob.Result.FAILURE_BUILD);
}
}
} catch (IOException e) {
throw new MojoExecutionException(e.getMessage(), e);
} finally {
if (selectorResult) {
runPostBuildHook(basedir, context, logger);
}
}
return true;
}