Fix daemon JVM start options (follow-up to #749) (#751)

This commit is contained in:
Guillaume Nodet
2022-12-09 23:58:13 +01:00
committed by GitHub
parent 866a7c6f3f
commit bc021d0577
3 changed files with 23 additions and 12 deletions

View File

@@ -29,6 +29,7 @@ import java.nio.channels.SocketChannel;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -378,33 +379,39 @@ public class DaemonConnector {
args.add("-Xss" + threadStackSize);
}
Environment.MVND_HOME.addCommandLineOption(args, mvndHome.toString());
Environment.MVND_HOME.addSystemProperty(args, mvndHome.toString());
args.add("-Dmaven.home=" + mvndHome.resolve("mvn"));
args.add("-Dmaven.conf=" + mvndHome.resolve("mvn/conf"));
Environment.MVND_JAVA_HOME.addCommandLineOption(
Environment.MVND_JAVA_HOME.addSystemProperty(
args, parameters.javaHome().toString());
Environment.LOGBACK_CONFIGURATION_FILE.addCommandLineOption(
Environment.LOGBACK_CONFIGURATION_FILE.addSystemProperty(
args, parameters.logbackConfigurationPath().toString());
Environment.MVND_ID.addCommandLineOption(args, daemonId);
Environment.MVND_DAEMON_STORAGE.addCommandLineOption(
Environment.MVND_ID.addSystemProperty(args, daemonId);
Environment.MVND_DAEMON_STORAGE.addSystemProperty(
args, parameters.daemonStorage().toString());
Environment.MVND_REGISTRY.addCommandLineOption(
Environment.MVND_REGISTRY.addSystemProperty(
args, parameters.registry().toString());
Environment.MVND_SOCKET_FAMILY.addCommandLineOption(
Environment.MVND_SOCKET_FAMILY.addSystemProperty(
args,
parameters
.socketFamily()
.orElseGet(() -> getJavaVersion() >= 16.0f ? SocketFamily.unix : SocketFamily.inet)
.toString());
parameters.discriminatingCommandLineOptions(args);
parameters.discriminatingSystemProperties(args);
args.add(MavenDaemon.class.getName());
command = String.join(" ", args);
LOGGER.debug(
"Starting daemon process: id = {}, workingDir = {}, daemonArgs: {}", daemonId, workingDir, command);
ProcessBuilder.Redirect redirect = ProcessBuilder.Redirect.appendTo(
parameters.daemonOutLog(daemonId).toFile());
Path daemonOutLog = parameters.daemonOutLog(daemonId);
Files.writeString(
daemonOutLog,
"Starting daemon process: id = " + daemonId + ", workingDir = " + workingDir + ", daemonArgs: "
+ command,
StandardOpenOption.CREATE,
StandardOpenOption.APPEND);
ProcessBuilder.Redirect redirect = ProcessBuilder.Redirect.appendTo(daemonOutLog.toFile());
ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder
.environment()

View File

@@ -96,8 +96,8 @@ public class DaemonParameters {
.filter(EnvValue::isSet);
}
public void discriminatingCommandLineOptions(List<String> args) {
discriminatingValues().forEach(envValue -> envValue.envKey.addCommandLineOption(args, envValue.asString()));
public void discriminatingSystemProperties(List<String> args) {
discriminatingValues().forEach(envValue -> envValue.envKey.addSystemProperty(args, envValue.asString()));
}
public Path mvndHome() {

View File

@@ -420,6 +420,10 @@ public enum Environment {
return property + "=" + type.normalize(value);
}
public void addSystemProperty(Collection<String> args, String value) {
args.add("-D" + property + "=" + type.normalize(value));
}
public void addCommandLineOption(Collection<String> args, String value) {
if (!options.isEmpty()) {
args.add(options.keySet().iterator().next());