in src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java [1850:1937]
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<>();
Properties scriptUserProperties = new Properties();
context.put("userProperties", scriptUserProperties);
if (!runSelectorHook(basedir, context, logger)) {
return false;
}
try {
runPreBuildHook(basedir, context, logger);
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 userProperties =
getUserProperties(basedir, invokerProperties.getUserPropertiesFile(invocationIndex));
userProperties.putAll(scriptUserProperties);
request.setProperties(userProperties);
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);
}
}
} finally {
runPostBuildHook(basedir, context, logger);
}
return true;
}