in maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/InvokerMavenExecutor.java [57:139]
public void executeGoals(
File workingDirectory,
List<String> goals,
ReleaseEnvironment releaseEnvironment,
boolean interactive,
String additionalArguments,
String pomFileName,
ReleaseResult result)
throws MavenExecutorException {
InvokerLogger bridge = getInvokerLogger();
Invoker invoker = new DefaultInvoker()
.setMavenHome(releaseEnvironment.getMavenHome())
.setLocalRepositoryDirectory(releaseEnvironment.getLocalRepositoryDirectory())
.setLogger(bridge);
InvocationRequest req = new DefaultInvocationRequest()
.setDebug(getLogger().isDebugEnabled())
.setBaseDirectory(workingDirectory)
// fix for MRELEASE-1105
// .addShellEnvironment( "MAVEN_DEBUG_OPTS", "" )
.setBatchMode(!interactive)
.setJavaHome(releaseEnvironment.getJavaHome())
.setOutputHandler(getLogger()::info)
.setErrorHandler(getLogger()::error);
// for interactive mode we need some inputs stream
if (interactive) {
req.setInputStream(System.in);
}
if (pomFileName != null) {
req.setPomFileName(pomFileName);
}
File settingsFile = null;
if (releaseEnvironment.getSettings() != null) {
// Have to serialize to a file as if Maven is embedded, there may not actually be a settings.xml on disk
try {
settingsFile = Files.createTempFile("release-settings", ".xml").toFile();
SettingsXpp3Writer writer = getSettingsWriter();
try (FileWriter fileWriter = new FileWriter(settingsFile)) {
writer.write(fileWriter, encryptSettings(releaseEnvironment.getSettings()));
}
req.setUserSettingsFile(settingsFile);
} catch (IOException e) {
throw new MavenExecutorException("Could not create temporary file for release settings.xml", e);
}
}
try {
List<String> targetGoals = new ArrayList<>(goals);
if (additionalArguments != null && !additionalArguments.isEmpty()) {
// additionalArguments will be parsed be MavenInvoker
targetGoals.add(additionalArguments);
}
req.setGoals(targetGoals);
try {
InvocationResult invocationResult = invoker.execute(req);
if (invocationResult.getExecutionException() != null) {
throw new MavenExecutorException(
"Error executing Maven.", invocationResult.getExecutionException());
}
if (invocationResult.getExitCode() != 0) {
throw new MavenExecutorException(
"Maven execution failed, exit code: " + invocationResult.getExitCode(),
invocationResult.getExitCode());
}
} catch (MavenInvocationException e) {
throw new MavenExecutorException("Failed to invoke Maven build.", e);
}
} finally {
if (settingsFile != null && settingsFile.exists() && !settingsFile.delete()) {
settingsFile.deleteOnExit();
}
}
}