mirror of
https://github.com/apache/maven-mvnd.git
synced 2026-01-13 07:04:14 +08:00
The JDK_JAVA_OPTIONS environment variable is not honoured, fixes #429
This commit is contained in:
@@ -303,6 +303,12 @@ public class DaemonConnector {
|
||||
}
|
||||
|
||||
private Process startDaemonProcess(String daemonId) {
|
||||
// Those options are needed in order to be able to set the environment correctly
|
||||
DaemonParameters parameters = this.parameters.withJdkJavaOpts(
|
||||
" --add-opens java.base/java.io=ALL-UNNAMED"
|
||||
+ " --add-opens java.base/java.lang=ALL-UNNAMED"
|
||||
+ " --add-opens java.base/java.util=ALL-UNNAMED"
|
||||
+ " --add-opens java.base/sun.nio.fs=ALL-UNNAMED");
|
||||
final Path mvndHome = parameters.mvndHome();
|
||||
final Path workingDir = parameters.userDir();
|
||||
String command = "";
|
||||
@@ -378,12 +384,7 @@ public class DaemonConnector {
|
||||
LOGGER.debug("Starting daemon process: id = {}, workingDir = {}, daemonArgs: {}", daemonId, workingDir, command);
|
||||
ProcessBuilder.Redirect redirect = ProcessBuilder.Redirect.appendTo(parameters.daemonOutLog(daemonId).toFile());
|
||||
ProcessBuilder processBuilder = new ProcessBuilder();
|
||||
processBuilder.environment()
|
||||
.put("JDK_JAVA_OPTIONS",
|
||||
"--add-opens java.base/java.io=ALL-UNNAMED " +
|
||||
"--add-opens java.base/java.lang=ALL-UNNAMED " +
|
||||
"--add-opens java.base/java.util=ALL-UNNAMED " +
|
||||
"--add-opens java.base/sun.nio.fs=ALL-UNNAMED");
|
||||
processBuilder.environment().put(Environment.JDK_JAVA_OPTIONS.getEnvironmentVariable(), parameters.jdkJavaOpts());
|
||||
Process process = processBuilder
|
||||
.directory(workingDir.toFile())
|
||||
.command(args)
|
||||
|
||||
@@ -229,6 +229,10 @@ public class DaemonParameters {
|
||||
return property(Environment.MVND_JVM_ARGS).asString();
|
||||
}
|
||||
|
||||
public String jdkJavaOpts() {
|
||||
return property(Environment.JDK_JAVA_OPTIONS).asString();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the number of threads (same syntax as Maven's {@code -T}/{@code --threads} option) to pass to the daemon
|
||||
* unless the user passes his own `-T` or `--threads`.
|
||||
@@ -292,6 +296,13 @@ public class DaemonParameters {
|
||||
.put(Environment.USER_DIR, newUserDir));
|
||||
}
|
||||
|
||||
public DaemonParameters withJdkJavaOpts(String opts) {
|
||||
String org = this.properties.getOrDefault(Environment.JDK_JAVA_OPTIONS.getProperty(), "");
|
||||
return new DaemonParameters(new PropertiesBuilder()
|
||||
.putAll(this.properties)
|
||||
.put(Environment.JDK_JAVA_OPTIONS, org + opts));
|
||||
}
|
||||
|
||||
public Duration keepAlive() {
|
||||
return property(Environment.MVND_KEEP_ALIVE).orFail().asDuration();
|
||||
}
|
||||
|
||||
@@ -95,6 +95,11 @@ public class DefaultClient implements Client {
|
||||
* and --color is not supported there yet. */
|
||||
args.add("-D" + Environment.MAVEN_COLOR.getProperty() + "=" + styleColor.name());
|
||||
|
||||
String userJdkJavaOpts = System.getenv(Environment.JDK_JAVA_OPTIONS.getEnvironmentVariable());
|
||||
if (userJdkJavaOpts != null) {
|
||||
Environment.JDK_JAVA_OPTIONS.addCommandLineOption(args, userJdkJavaOpts);
|
||||
}
|
||||
|
||||
// System properties
|
||||
setSystemPropertiesFromCommandLine(args);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user