kwin commented on code in PR #762: URL: https://github.com/apache/maven-surefire/pull/762#discussion_r1696963850
########## maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java: ########## @@ -319,25 +320,44 @@ public abstract class AbstractSurefireMojo extends AbstractMojo implements Suref */ @Deprecated @Parameter - private Properties systemProperties; + Properties systemProperties; /** * List of System properties to pass to a provider. * The effective system properties given to a provider are contributed from several sources: * <ol> + * <li>properties set via {@link #argLine} with {@code -D} (only for forked executions)</li> * <li>{@link #systemProperties}</li> * <li>{@link AbstractSurefireMojo#getSystemPropertiesFile()} (set via parameter {@code systemPropertiesFile} on some goals)</li> * <li>{@link #systemPropertyVariables}</li> - * <li>User properties from {@link MavenSession#getUserProperties()}, usually set via CLI options given with {@code -D}</li> + * <li>User properties from {@link MavenSession#getUserProperties()}, usually set via CLI options given with {@code -D} on the current Maven process (only used as source if {@link #useUserPropertiesAsSystemProperty} is {@code true})</li> * </ol> * Later sources may overwrite same named properties from earlier sources, that means for example that one cannot overwrite user properties with either - * {@link #systemProperties}, {@link AbstractSurefireMojo#getSystemPropertiesFile()} or {@link #systemPropertyVariables}. + * {@link #systemProperties}, {@link #getSystemPropertiesFile()} or {@link #systemPropertyVariables}. + * <p> + * Certain properties may only be overwritten via {@link #argLine} (applicable only for forked executions) because their values are cached and only evaluated at the start of the JRE. + * Those include: + * <ul> + * <li>{@code java.library.path}</li> + * <li>{@code file.encoding}</li> + * <li>{@code jdk.map.althashing.threshold}</li> + * <li>{@code line.separator}</li> + * </ul> * * @since 2.5 * @see #systemProperties */ @Parameter - private Map<String, String> systemPropertyVariables; + Map<String, String> systemPropertyVariables; + + /** + * If set to {@code true} will also pass all user properties exposed via {@link MavenSession#getUserProperties()} as system properties to a provider. + * Those always take precedence over same named system properties set via any other means. + * @since 3.4.0 + * @see #systemPropertyVariables + */ + @Parameter(defaultValue = "true") + boolean useUserPropertiesAsSystemProperty; Review Comment: Done in https://github.com/apache/maven-surefire/pull/762/commits/f21ac963663d27d8b316d789648cb6da44088e4d ########## maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java: ########## @@ -1152,8 +1173,11 @@ private SurefireProperties setupProperties() { } } - SurefireProperties result = SurefireProperties.calculateEffectiveProperties( - getSystemProperties(), getSystemPropertyVariables(), getUserProperties(), sysProps); + SurefireProperties result = calculateEffectiveProperties( + getSystemProperties(), + getSystemPropertyVariables(), + useUserPropertiesAsSystemProperty ? getUserProperties() : null, Review Comment: Done in https://github.com/apache/maven-surefire/pull/762/commits/f21ac963663d27d8b316d789648cb6da44088e4d. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@maven.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org