in maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/ForkedMavenExecutor.java [65:157]
public void executeGoals(
File workingDirectory,
List<String> goals,
ReleaseEnvironment releaseEnvironment,
boolean interactive,
String additionalArguments,
String pomFileName,
ReleaseResult relResult)
throws MavenExecutorException {
String mavenPath;
// if null we use the current one
if (releaseEnvironment.getMavenHome() != null) {
mavenPath = releaseEnvironment.getMavenHome().getAbsolutePath();
} else {
mavenPath = System.getProperty("maven.home");
}
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()));
}
} catch (IOException e) {
throw new MavenExecutorException("Could not create temporary file for release settings.xml", e);
}
}
try {
Commandline cl =
commandLineFactory.createCommandLine(mavenPath + File.separator + "bin" + File.separator + "mvn");
cl.setWorkingDirectory(workingDirectory.getAbsolutePath());
// FIX for MRELEASE-1105
// cl.addEnvironment( "MAVEN_DEBUG_OPTS", "" );
cl.addEnvironment("MAVEN_TERMINATE_CMD", "on");
if (releaseEnvironment.getJavaHome() != null) {
cl.addEnvironment("JAVA_HOME", releaseEnvironment.getJavaHome().getAbsolutePath());
}
if (settingsFile != null) {
cl.createArg().setValue("-s");
cl.createArg().setFile(settingsFile);
}
if (pomFileName != null) {
cl.createArg().setValue("-f");
cl.createArg().setValue(pomFileName);
}
for (String goal : goals) {
cl.createArg().setValue(goal);
}
if (!interactive) {
cl.createArg().setValue("--batch-mode");
}
if (!(additionalArguments == null || additionalArguments.isEmpty())) {
cl.createArg().setLine(additionalArguments);
}
TeeOutputStream stdOut = new TeeOutputStream(System.out);
TeeOutputStream stdErr = new TeeOutputStream(System.err);
try {
relResult.appendInfo("Executing: " + cl);
getLogger().info("Executing: " + cl);
int result = executeCommandLine(cl, System.in, stdOut, stdErr);
if (result != 0) {
throw new MavenExecutorException("Maven execution failed, exit code: '" + result + "'", result);
}
} catch (CommandLineException e) {
throw new MavenExecutorException("Can't run goal " + goals, e);
} finally {
relResult.appendOutput(stdOut.toString());
}
} finally {
if (settingsFile != null && settingsFile.exists() && !settingsFile.delete()) {
settingsFile.deleteOnExit();
}
}
}