mirror of
https://github.com/apache/maven-mvnd.git
synced 2025-09-10 04:59:54 +00: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) {
|
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 mvndHome = parameters.mvndHome();
|
||||||
final Path workingDir = parameters.userDir();
|
final Path workingDir = parameters.userDir();
|
||||||
String command = "";
|
String command = "";
|
||||||
@@ -378,12 +384,7 @@ public class DaemonConnector {
|
|||||||
LOGGER.debug("Starting daemon process: id = {}, workingDir = {}, daemonArgs: {}", daemonId, workingDir, command);
|
LOGGER.debug("Starting daemon process: id = {}, workingDir = {}, daemonArgs: {}", daemonId, workingDir, command);
|
||||||
ProcessBuilder.Redirect redirect = ProcessBuilder.Redirect.appendTo(parameters.daemonOutLog(daemonId).toFile());
|
ProcessBuilder.Redirect redirect = ProcessBuilder.Redirect.appendTo(parameters.daemonOutLog(daemonId).toFile());
|
||||||
ProcessBuilder processBuilder = new ProcessBuilder();
|
ProcessBuilder processBuilder = new ProcessBuilder();
|
||||||
processBuilder.environment()
|
processBuilder.environment().put(Environment.JDK_JAVA_OPTIONS.getEnvironmentVariable(), parameters.jdkJavaOpts());
|
||||||
.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");
|
|
||||||
Process process = processBuilder
|
Process process = processBuilder
|
||||||
.directory(workingDir.toFile())
|
.directory(workingDir.toFile())
|
||||||
.command(args)
|
.command(args)
|
||||||
|
@@ -229,6 +229,10 @@ public class DaemonParameters {
|
|||||||
return property(Environment.MVND_JVM_ARGS).asString();
|
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
|
* @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`.
|
* unless the user passes his own `-T` or `--threads`.
|
||||||
@@ -292,6 +296,13 @@ public class DaemonParameters {
|
|||||||
.put(Environment.USER_DIR, newUserDir));
|
.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() {
|
public Duration keepAlive() {
|
||||||
return property(Environment.MVND_KEEP_ALIVE).orFail().asDuration();
|
return property(Environment.MVND_KEEP_ALIVE).orFail().asDuration();
|
||||||
}
|
}
|
||||||
|
@@ -95,6 +95,11 @@ public class DefaultClient implements Client {
|
|||||||
* and --color is not supported there yet. */
|
* and --color is not supported there yet. */
|
||||||
args.add("-D" + Environment.MAVEN_COLOR.getProperty() + "=" + styleColor.name());
|
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
|
// System properties
|
||||||
setSystemPropertiesFromCommandLine(args);
|
setSystemPropertiesFromCommandLine(args);
|
||||||
|
|
||||||
|
@@ -84,6 +84,10 @@ public enum Environment {
|
|||||||
USER_HOME("user.home", null, null, OptionType.PATH, Flags.NONE),
|
USER_HOME("user.home", null, null, OptionType.PATH, Flags.NONE),
|
||||||
/** The current working directory */
|
/** The current working directory */
|
||||||
USER_DIR("user.dir", null, null, OptionType.PATH, Flags.NONE),
|
USER_DIR("user.dir", null, null, OptionType.PATH, Flags.NONE),
|
||||||
|
/** The JDK_JAVA_OPTIONS option */
|
||||||
|
JDK_JAVA_OPTIONS("jdk.java.options", "JDK_JAVA_OPTIONS", "", OptionType.STRING, Flags.DISCRIMINATING) {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
//
|
//
|
||||||
// Maven properties
|
// Maven properties
|
||||||
|
@@ -147,7 +147,7 @@ _mvnd()
|
|||||||
|
|
||||||
local mvnd_opts="-1"
|
local mvnd_opts="-1"
|
||||||
local mvnd_long_opts="--color|--completion|--purge|--serial|--status|--stop"
|
local mvnd_long_opts="--color|--completion|--purge|--serial|--status|--stop"
|
||||||
local mvnd_properties="-Djava.home|-Dmaven.multiModuleProjectDirectory|-Dmaven.repo.local|-Dmaven.settings|-Dmvnd.buildTime|-Dmvnd.builder|-Dmvnd.daemonStorage|-Dmvnd.debug|-Dmvnd.duplicateDaemonGracePeriod|-Dmvnd.enableAssertions|-Dmvnd.expirationCheckDelay|-Dmvnd.home|-Dmvnd.idleTimeout|-Dmvnd.jvmArgs|-Dmvnd.keepAlive|-Dmvnd.logPurgePeriod|-Dmvnd.logback|-Dmvnd.maxHeapSize|-Dmvnd.maxLostKeepAlive|-Dmvnd.minHeapSize|-Dmvnd.minThreads|-Dmvnd.noBuffering|-Dmvnd.noDaemon|-Dmvnd.propertiesPath|-Dmvnd.registry|-Dmvnd.rollingWindowSize|-Dmvnd.serial|-Dmvnd.threads|-Dstyle.color|-Duser.dir|-Duser.home"
|
local mvnd_properties="-Djava.home|-Djdk.java.options|-Dmaven.multiModuleProjectDirectory|-Dmaven.repo.local|-Dmaven.settings|-Dmvnd.buildTime|-Dmvnd.builder|-Dmvnd.daemonStorage|-Dmvnd.debug|-Dmvnd.duplicateDaemonGracePeriod|-Dmvnd.enableAssertions|-Dmvnd.expirationCheckDelay|-Dmvnd.home|-Dmvnd.idleTimeout|-Dmvnd.jvmArgs|-Dmvnd.keepAlive|-Dmvnd.logPurgePeriod|-Dmvnd.logback|-Dmvnd.maxHeapSize|-Dmvnd.maxLostKeepAlive|-Dmvnd.minHeapSize|-Dmvnd.minThreads|-Dmvnd.noBuffering|-Dmvnd.noDaemon|-Dmvnd.propertiesPath|-Dmvnd.registry|-Dmvnd.rollingWindowSize|-Dmvnd.serial|-Dmvnd.threads|-Dstyle.color|-Duser.dir|-Duser.home"
|
||||||
local opts="-am|-amd|-B|-C|-c|-cpu|-D|-e|-emp|-ep|-f|-fae|-ff|-fn|-gs|-h|-l|-N|-npr|-npu|-nsu|-o|-P|-pl|-q|-rf|-s|-T|-t|-U|-up|-V|-v|-X|${mvnd_opts}"
|
local opts="-am|-amd|-B|-C|-c|-cpu|-D|-e|-emp|-ep|-f|-fae|-ff|-fn|-gs|-h|-l|-N|-npr|-npu|-nsu|-o|-P|-pl|-q|-rf|-s|-T|-t|-U|-up|-V|-v|-X|${mvnd_opts}"
|
||||||
local long_opts="--also-make|--also-make-dependents|--batch-mode|--strict-checksums|--lax-checksums|--check-plugin-updates|--define|--errors|--encrypt-master-password|--encrypt-password|--file|--fail-at-end|--fail-fast|--fail-never|--global-settings|--help|--log-file|--non-recursive|--no-plugin-registry|--no-plugin-updates|--no-snapshot-updates|--offline|--activate-profiles|--projects|--quiet|--resume-from|--settings|--threads|--toolchains|--update-snapshots|--update-plugins|--show-version|--version|--debug|${mvnd_long_opts}"
|
local long_opts="--also-make|--also-make-dependents|--batch-mode|--strict-checksums|--lax-checksums|--check-plugin-updates|--define|--errors|--encrypt-master-password|--encrypt-password|--file|--fail-at-end|--fail-fast|--fail-never|--global-settings|--help|--log-file|--non-recursive|--no-plugin-registry|--no-plugin-updates|--no-snapshot-updates|--offline|--activate-profiles|--projects|--quiet|--resume-from|--settings|--threads|--toolchains|--update-snapshots|--update-plugins|--show-version|--version|--debug|${mvnd_long_opts}"
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user