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 20:20:07 UTC

[maven] branch maven-3.9.x updated: [MNG-7131] maven.config doesn't handle arguments with spaces in them

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

michaelo pushed a commit to branch maven-3.9.x
in repository https://gitbox.apache.org/repos/asf/maven.git


The following commit(s) were added to refs/heads/maven-3.9.x by this push:
     new 331c5c343 [MNG-7131] maven.config doesn't handle arguments with spaces in them
331c5c343 is described below

commit 331c5c3435cdfa8dc3f35a7b38503bdac2654206
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Thu Jul 15 18:55:16 2021 +0200

    [MNG-7131] maven.config doesn't handle arguments with spaces in them
    
    Since we don't have a clear specification of the file format change
    reading of the file to a one-arg-per-line basis just like Java's
    @argfiles or Python's argparse would handle it.
    Consider that jvm.config suffers from the same issue its parsing is not
    portable between Bourne shell and Windows Command prompt.
---
 .../src/main/java/org/apache/maven/cli/MavenCli.java  |  3 ++-
 .../test/java/org/apache/maven/cli/MavenCliTest.java  | 19 +++++++++++++++----
 .../src/test/projects/config/.mvn/maven.config        |  5 +++--
 .../projects/mavenConfigProperties/.mvn/maven.config  |  4 +++-
 4 files changed, 23 insertions(+), 8 deletions(-)

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 75361c5dc..1a38e6409 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
@@ -32,6 +32,7 @@ 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;
@@ -331,7 +332,7 @@ public class MavenCli {
             File configFile = new File(cliRequest.multiModuleProjectDirectory, MVN_MAVEN_CONFIG);
 
             if (configFile.isFile()) {
-                for (String arg : new String(Files.readAllBytes(configFile.toPath())).split("\\s+")) {
+                for (String arg : Files.readAllLines(configFile.toPath(), Charset.defaultCharset())) {
                     if (!arg.isEmpty()) {
                         args.add(arg);
                     }
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 8e00e709b..9fb867a5b 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
@@ -126,8 +126,10 @@ public class MavenCliTest {
     /**
      * Read .mvn/maven.config with the following definitions:
      * <pre>
-     *   -T 3
+     *   -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.
@@ -151,8 +153,10 @@ public class MavenCliTest {
     /**
      * Read .mvn/maven.config with the following definitions:
      * <pre>
-     *   -T 3
+     *   -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.
@@ -178,8 +182,10 @@ public class MavenCliTest {
     /**
      * Read .mvn/maven.config with the following definitions:
      * <pre>
-     *   -T 3
+     *   -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.
@@ -205,8 +211,10 @@ public class MavenCliTest {
     /**
      * Read .mvn/maven.config with the following definitions:
      * <pre>
-     *   -T 3
+     *   -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.
@@ -229,11 +237,14 @@ public class MavenCliTest {
         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.getSystemProperties().getProperty("label"));
 
         assertEquals("-Dpom.xml", request.getCommandLine().getOptionValue(CLIManager.ALTERNATE_POM_FILE));
     }
diff --git a/maven-embedder/src/test/projects/config/.mvn/maven.config b/maven-embedder/src/test/projects/config/.mvn/maven.config
index 3d0f13b2c..280d57794 100644
--- a/maven-embedder/src/test/projects/config/.mvn/maven.config
+++ b/maven-embedder/src/test/projects/config/.mvn/maven.config
@@ -1,2 +1,3 @@
--T8 --builder  
-  multithreaded
+-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
index c73de53ae..82570230f 100644
--- a/maven-embedder/src/test/projects/mavenConfigProperties/.mvn/maven.config
+++ b/maven-embedder/src/test/projects/mavenConfigProperties/.mvn/maven.config
@@ -1,3 +1,5 @@
--T 3
+-T
+3
 -Drevision=1.3.0
+"-Dlabel=Apache Maven"