You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2022/12/26 17:01:03 UTC

[maven] branch MNG-5857_alt-1 updated (43493cf5d -> 46dbf899d)

This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a change to branch MNG-5857_alt-1
in repository https://gitbox.apache.org/repos/asf/maven.git


    omit 43493cf5d Update startup scripts
    omit faf20571f Remove Java code for parsing
    omit 5cd2915fc Remove non-usable test
     new 46dbf899d [MNG-5857] Arguments from command line should override those in .mvn/maven.config

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (43493cf5d)
            \
             N -- N -- N   refs/heads/MNG-5857_alt-1 (46dbf899d)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:


[maven] 01/01: [MNG-5857] Arguments from command line should override those in .mvn/maven.config

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch MNG-5857_alt-1
in repository https://gitbox.apache.org/repos/asf/maven.git

commit 46dbf899d4ade5a93d374c3463f53a150b0946db
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Sun Oct 24 19:46:49 2021 +0200

    [MNG-5857] Arguments from command line should override those in .mvn/maven.config
---
 apache-maven/src/assembly/shared/init              |   1 +
 apache-maven/src/assembly/shared/init.cmd          |   7 +
 .../main/java/org/apache/maven/cli/MavenCli.java   |  65 +--------
 .../java/org/apache/maven/cli/MavenCliTest.java    | 155 ---------------------
 .../test/projects/config-illegal/.mvn/maven.config |   1 -
 .../src/test/projects/config/.mvn/maven.config     |   3 -
 .../mavenConfigProperties/.mvn/maven.config        |   5 -
 7 files changed, 9 insertions(+), 228 deletions(-)

diff --git a/apache-maven/src/assembly/shared/init b/apache-maven/src/assembly/shared/init
index d5bd529b6..934e039e8 100755
--- a/apache-maven/src/assembly/shared/init
+++ b/apache-maven/src/assembly/shared/init
@@ -84,3 +84,4 @@ concat_lines() {
 
 MAVEN_PROJECTBASEDIR="`find_maven_basedir "$@"`"
 MAVEN_OPTS="$MAVEN_OPTS `concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config"`"
+MAVEN_ARGS="$MAVEN_ARGS `concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/maven.config"`"
diff --git a/apache-maven/src/assembly/shared/init.cmd b/apache-maven/src/assembly/shared/init.cmd
index e41e093b2..7742d6921 100755
--- a/apache-maven/src/assembly/shared/init.cmd
+++ b/apache-maven/src/assembly/shared/init.cmd
@@ -92,3 +92,10 @@ for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do s
 
 :endReadJvmConfig
 
+if not exist "%MAVEN_PROJECTBASEDIR%\.mvn\maven.config" goto endReadMavenConfig
+
+@setlocal EnableExtensions EnableDelayedExpansion
+for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\maven.config") do set MAVEN_CONFIG_MAVEN_PROPS=!MAVEN_CONFIG_MAVEN_PROPS! %%a
+@endlocal & set MAVEN_ARGS=%MAVEN_ARGS% %MAVEN_CONFIG_MAVEN_PROPS%
+
+:endReadMavenConfig
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
index 509b02ede..c27e1fe77 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
@@ -27,8 +27,6 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintStream;
-import java.nio.charset.Charset;
-import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
@@ -44,7 +42,6 @@ import java.util.regex.Pattern;
 
 import com.google.inject.AbstractModule;
 import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.Option;
 import org.apache.commons.cli.ParseException;
 import org.apache.commons.cli.UnrecognizedOptionException;
 import org.apache.commons.lang3.math.NumberUtils;
@@ -147,8 +144,6 @@ public class MavenCli {
 
     private static final String EXTENSIONS_FILENAME = ".mvn/extensions.xml";
 
-    private static final String MVN_MAVEN_CONFIG = ".mvn/maven.config";
-
     public static final String STYLE_COLOR_PROPERTY = "style.color";
 
     private ClassWorld classWorld;
@@ -339,36 +334,8 @@ public class MavenCli {
 
         cliManager = new CLIManager();
 
-        List<String> args = new ArrayList<>();
-        CommandLine mavenConfig = null;
-        try {
-            File configFile = new File(cliRequest.multiModuleProjectDirectory, MVN_MAVEN_CONFIG);
-
-            if (configFile.isFile()) {
-                for (String arg : Files.readAllLines(configFile.toPath(), Charset.defaultCharset())) {
-                    if (!arg.isEmpty()) {
-                        args.add(arg);
-                    }
-                }
-
-                mavenConfig = cliManager.parse(args.toArray(new String[0]));
-                List<?> unrecognized = mavenConfig.getArgList();
-                if (!unrecognized.isEmpty()) {
-                    throw new ParseException("Unrecognized maven.config entries: " + unrecognized);
-                }
-            }
-        } catch (ParseException e) {
-            System.err.println("Unable to parse maven.config: " + e.getMessage());
-            cliManager.displayHelp(System.out);
-            throw e;
-        }
-
         try {
-            if (mavenConfig == null) {
-                cliRequest.commandLine = cliManager.parse(cliRequest.args);
-            } else {
-                cliRequest.commandLine = cliMerge(cliManager.parse(cliRequest.args), mavenConfig);
-            }
+            cliRequest.commandLine = cliManager.parse(cliRequest.args);
         } catch (ParseException e) {
             System.err.println("Unable to parse command line options: " + e.getMessage());
             cliManager.displayHelp(System.out);
@@ -392,36 +359,6 @@ public class MavenCli {
         }
     }
 
-    private CommandLine cliMerge(CommandLine mavenArgs, CommandLine mavenConfig) {
-        CommandLine.Builder commandLineBuilder = new CommandLine.Builder();
-
-        // the args are easy, cli first then config file
-        for (String arg : mavenArgs.getArgs()) {
-            commandLineBuilder.addArg(arg);
-        }
-        for (String arg : mavenConfig.getArgs()) {
-            commandLineBuilder.addArg(arg);
-        }
-
-        // now add all options, except for -D with cli first then config file
-        List<Option> setPropertyOptions = new ArrayList<>();
-        for (Option opt : mavenArgs.getOptions()) {
-            if (String.valueOf(CLIManager.SET_USER_PROPERTY).equals(opt.getOpt())) {
-                setPropertyOptions.add(opt);
-            } else {
-                commandLineBuilder.addOption(opt);
-            }
-        }
-        for (Option opt : mavenConfig.getOptions()) {
-            commandLineBuilder.addOption(opt);
-        }
-        // finally add the CLI user properties
-        for (Option opt : setPropertyOptions) {
-            commandLineBuilder.addOption(opt);
-        }
-        return commandLineBuilder.build();
-    }
-
     /**
      * configure logging
      */
diff --git a/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java b/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java
index 1f1da2e7c..e4f320ce0 100644
--- a/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java
+++ b/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java
@@ -163,161 +163,6 @@ public class MavenCliTest {
         assertThrows(IllegalArgumentException.class, () -> cli.calculateDegreeOfConcurrency("0C"));
     }
 
-    @Test
-    public void testMavenConfig() throws Exception {
-        System.setProperty(
-                MavenCli.MULTIMODULE_PROJECT_DIRECTORY, new File("src/test/projects/config").getCanonicalPath());
-        CliRequest request = new CliRequest(new String[0], null);
-
-        // read .mvn/maven.config
-        cli.initialize(request);
-        cli.cli(request);
-        assertEquals("multithreaded", request.commandLine.getOptionValue(CLIManager.BUILDER));
-        assertEquals("8", request.commandLine.getOptionValue(CLIManager.THREADS));
-
-        // override from command line
-        request = new CliRequest(new String[] {"--builder", "foobar"}, null);
-        cli.cli(request);
-        assertEquals("foobar", request.commandLine.getOptionValue("builder"));
-    }
-
-    @Test
-    public void testMavenConfigInvalid() throws Exception {
-        System.setProperty(
-                MavenCli.MULTIMODULE_PROJECT_DIRECTORY,
-                new File("src/test/projects/config-illegal").getCanonicalPath());
-        CliRequest request = new CliRequest(new String[0], null);
-
-        cli.initialize(request);
-        assertThrows(ParseException.class, () -> cli.cli(request));
-    }
-
-    /**
-     * Read .mvn/maven.config with the following definitions:
-     * <pre>
-     *   -T
-     *   3
-     *   -Drevision=1.3.0
-     *   "-Dlabel=Apache Maven"
-     * </pre>
-     * and check if the {@code -T 3} option can be overwritten via command line
-     * argument.
-     *
-     * @throws Exception in case of failure.
-     */
-    @Test
-    public void testMVNConfigurationThreadCanBeOverwrittenViaCommandLine() throws Exception {
-        System.setProperty(
-                MavenCli.MULTIMODULE_PROJECT_DIRECTORY,
-                new File("src/test/projects/mavenConfigProperties").getCanonicalPath());
-        CliRequest request = new CliRequest(new String[] {"-T", "5"}, null);
-
-        cli.initialize(request);
-        // read .mvn/maven.config
-        cli.cli(request);
-
-        assertEquals("5", request.commandLine.getOptionValue(CLIManager.THREADS));
-    }
-
-    /**
-     * Read .mvn/maven.config with the following definitions:
-     * <pre>
-     *   -T
-     *   3
-     *   -Drevision=1.3.0
-     *   "-Dlabel=Apache Maven"
-     * </pre>
-     * and check if the {@code -Drevision-1.3.0} option can be overwritten via command line
-     * argument.
-     *
-     * @throws Exception
-     */
-    @Test
-    public void testMVNConfigurationDefinedPropertiesCanBeOverwrittenViaCommandLine() throws Exception {
-        System.setProperty(
-                MavenCli.MULTIMODULE_PROJECT_DIRECTORY,
-                new File("src/test/projects/mavenConfigProperties").getCanonicalPath());
-        CliRequest request = new CliRequest(new String[] {"-Drevision=8.1.0"}, null);
-
-        cli.initialize(request);
-        // read .mvn/maven.config
-        cli.cli(request);
-        cli.properties(request);
-
-        String revision = System.getProperty("revision");
-        assertEquals("8.1.0", revision);
-    }
-
-    /**
-     * Read .mvn/maven.config with the following definitions:
-     * <pre>
-     *   -T
-     *   3
-     *   -Drevision=1.3.0
-     *   "-Dlabel=Apache Maven"
-     * </pre>
-     * and check if the {@code -Drevision-1.3.0} option can be overwritten via command line
-     * argument.
-     *
-     * @throws Exception
-     */
-    @Test
-    public void testMVNConfigurationCLIRepeatedPropertiesLastWins() throws Exception {
-        System.setProperty(
-                MavenCli.MULTIMODULE_PROJECT_DIRECTORY,
-                new File("src/test/projects/mavenConfigProperties").getCanonicalPath());
-        CliRequest request = new CliRequest(new String[] {"-Drevision=8.1.0", "-Drevision=8.2.0"}, null);
-
-        cli.initialize(request);
-        // read .mvn/maven.config
-        cli.cli(request);
-        cli.properties(request);
-
-        String revision = System.getProperty("revision");
-        assertEquals("8.2.0", revision);
-    }
-
-    /**
-     * Read .mvn/maven.config with the following definitions:
-     * <pre>
-     *   -T
-     *   3
-     *   -Drevision=1.3.0
-     *   "-Dlabel=Apache Maven"
-     * </pre>
-     * and check if the {@code -Drevision-1.3.0} option can be overwritten via command line argument when there are
-     * funky arguments present.
-     *
-     * @throws Exception
-     */
-    @Test
-    public void testMVNConfigurationFunkyArguments() throws Exception {
-        System.setProperty(
-                MavenCli.MULTIMODULE_PROJECT_DIRECTORY,
-                new File("src/test/projects/mavenConfigProperties").getCanonicalPath());
-        CliRequest request = new CliRequest(
-                new String[] {
-                    "-Drevision=8.1.0", "--file=-Dpom.xml", "\"-Dfoo=bar ", "\"-Dfoo2=bar two\"", "-Drevision=8.2.0"
-                },
-                null);
-
-        cli.initialize(request);
-        // read .mvn/maven.config
-        cli.cli(request);
-        cli.properties(request);
-
-        assertEquals("3", request.commandLine.getOptionValue(CLIManager.THREADS));
-
-        String revision = System.getProperty("revision");
-        assertEquals("8.2.0", revision);
-
-        assertEquals("bar ", request.getUserProperties().getProperty("foo"));
-        assertEquals("bar two", request.getUserProperties().getProperty("foo2"));
-        assertEquals("Apache Maven", request.getUserProperties().getProperty("label"));
-
-        assertEquals("-Dpom.xml", request.getCommandLine().getOptionValue(CLIManager.ALTERNATE_POM_FILE));
-    }
-
     @Test
     public void testStyleColors() throws Exception {
         assumeTrue(MessageUtils.isColorEnabled(), "ANSI not supported");
diff --git a/maven-embedder/src/test/projects/config-illegal/.mvn/maven.config b/maven-embedder/src/test/projects/config-illegal/.mvn/maven.config
deleted file mode 100644
index 8541464a7..000000000
--- a/maven-embedder/src/test/projects/config-illegal/.mvn/maven.config
+++ /dev/null
@@ -1 +0,0 @@
-deploy
diff --git a/maven-embedder/src/test/projects/config/.mvn/maven.config b/maven-embedder/src/test/projects/config/.mvn/maven.config
deleted file mode 100644
index 280d57794..000000000
--- a/maven-embedder/src/test/projects/config/.mvn/maven.config
+++ /dev/null
@@ -1,3 +0,0 @@
--T8
---builder
-multithreaded
diff --git a/maven-embedder/src/test/projects/mavenConfigProperties/.mvn/maven.config b/maven-embedder/src/test/projects/mavenConfigProperties/.mvn/maven.config
deleted file mode 100644
index 82570230f..000000000
--- a/maven-embedder/src/test/projects/mavenConfigProperties/.mvn/maven.config
+++ /dev/null
@@ -1,5 +0,0 @@
--T
-3
--Drevision=1.3.0
-"-Dlabel=Apache Maven"
-