[ https://issues.apache.org/jira/browse/MNG-7914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17865187#comment-17865187 ]
ASF GitHub Bot commented on MNG-7914: ------------------------------------- slawekjaranowski commented on code in PR #1595: URL: https://github.com/apache/maven/pull/1595#discussion_r1674500730 ########## maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java: ########## @@ -1624,20 +1635,65 @@ static void populateProperties( String mavenBuildVersion = CLIReportingUtils.createMavenVersionString(buildProperties); systemProperties.setProperty("maven.build.version", mavenBuildVersion); - BasicInterpolator interpolator = - createInterpolator(paths, systemProperties, userProperties, userSpecifiedProperties); - for (Map.Entry<Object, Object> e : userSpecifiedProperties.entrySet()) { - String name = (String) e.getKey(); - String value = interpolator.interpolate((String) e.getValue()); - userProperties.setProperty(name, value); - // ---------------------------------------------------------------------- - // I'm leaving the setting of system properties here as not to break - // the SystemPropertyProfileActivator. This won't harm embedding. jvz. - // ---------------------------------------------------------------------- - if (System.getProperty(name) == null) { - System.setProperty(name, value); - } + // ---------------------------------------------------------------------- + // Options that are set on the command line become system properties + // and therefore are set in the session properties. System properties + // are most dominant. + // ---------------------------------------------------------------------- + + Properties userSpecifiedProperties = + commandLine.getOptionProperties(String.valueOf(CLIManager.SET_USER_PROPERTY)); + userProperties.putAll(userSpecifiedProperties); + + // ---------------------------------------------------------------------- + // Load config files + // ---------------------------------------------------------------------- + Function<String, String> callback = + or(paths::getProperty, prefix("cli.", commandLine::getOptionValue), systemProperties::getProperty); Review Comment: Please also add: `userProperties::getProperty`, so we can use: `mvn ... -Dname=xxx` > Provide a single entry point for configuration > ---------------------------------------------- > > Key: MNG-7914 > URL: https://issues.apache.org/jira/browse/MNG-7914 > Project: Maven > Issue Type: New Feature > Reporter: Guillaume Nodet > Priority: Major > Fix For: 4.0.x-candidate > > > Looking at MNG-7772, this should not require any code change, but it's all > about configuration. > I propose to load / interpolate the following files: > * {{${maven.home}/conf/maven.user.properties}} > * {{${maven.home}/conf/maven.system.properties}} > Those files would be used to load additional user properties and system > properties for Maven. In addition to the simple interpolation mechanism, we > should provide two enhancements using special keys {{{}$\{includes{}}}} and > {{{}$\{optionals{}}}} which would be used to load additional referenced > configuration files such as: > {{ ${optionals} = ${user.home}/.m2/maven.user.properties, > ${session.rootDirectory}/.mvn/maven.user.properties}} > Being loaded early when Maven is loaded, those files could reference > directories to load extensions from: > {{{}maven.core.extensions.directories = > ${session.rootDirectory}/.mvn/extensions.xml,{}}}{{{}${user.home}/.m2/extensions.xml,${maven.home}/extensions.xml{}}} > > In various places, the maven code could be simplified and offer more > configuration points at the same time. -- This message was sent by Atlassian Jira (v8.20.10#820010)