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

gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-mvnd.git


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

commit f9c059c69403c179d2b74a2bbf9b7a98bad0c1a8
Author: Guillaume Nodet <gno...@gmail.com>
AuthorDate: Tue Mar 14 14:40:05 2023 +0100

    [MNG-7131] maven.config doesn't handle arguments with spaces in them 
(backport to mvnd)
---
 .../main/java/org/apache/maven/cli/DaemonMavenCli.java | 18 ++++++++----------
 .../main/java/org/apache/maven/cli/DaemonMavenCli.java | 18 ++++++++----------
 2 files changed, 16 insertions(+), 20 deletions(-)

diff --git a/daemon-m39/src/main/java/org/apache/maven/cli/DaemonMavenCli.java 
b/daemon-m39/src/main/java/org/apache/maven/cli/DaemonMavenCli.java
index feac407e..eb2b65d0 100644
--- a/daemon-m39/src/main/java/org/apache/maven/cli/DaemonMavenCli.java
+++ b/daemon-m39/src/main/java/org/apache/maven/cli/DaemonMavenCli.java
@@ -22,6 +22,7 @@ import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.PrintStream;
+import java.nio.charset.Charset;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
@@ -266,23 +267,20 @@ public class DaemonMavenCli implements DaemonCli {
     void cli(CliRequest cliRequest) throws Exception {
         CLIManager cliManager = newCLIManager();
 
-        List<String> args = new ArrayList<>();
         CommandLine mavenConfig = null;
         try {
             File configFile = new File(cliRequest.multiModuleProjectDirectory, 
MVN_MAVEN_CONFIG);
 
             if (configFile.isFile()) {
-                for (String arg : new 
String(Files.readAllBytes(configFile.toPath())).split("\\s+")) {
-                    if (!arg.isEmpty()) {
-                        args.add(arg);
+                try (Stream<String> lines = Files.lines(configFile.toPath(), 
Charset.defaultCharset())) {
+                    String[] args = lines.filter(arg -> 
!arg.isEmpty()).toArray(String[]::new);
+                    mavenConfig = cliManager.parse(args);
+                    List<?> unrecognized = mavenConfig.getArgList();
+                    if (!unrecognized.isEmpty()) {
+                        // This file can only contain options, not args (goals 
or phases)
+                        throw new ParseException("Unrecognized maven.config 
file entries: " + unrecognized);
                     }
                 }
-
-                mavenConfig = cliManager.parse(args.toArray(new String[0]));
-                List<?> unrecongized = mavenConfig.getArgList();
-                if (!unrecongized.isEmpty()) {
-                    throw new ParseException("Unrecognized maven.config 
entries: " + unrecongized);
-                }
             }
         } catch (ParseException e) {
             buildEventListener.log("Unable to parse maven.config: " + 
e.getMessage());
diff --git a/daemon-m40/src/main/java/org/apache/maven/cli/DaemonMavenCli.java 
b/daemon-m40/src/main/java/org/apache/maven/cli/DaemonMavenCli.java
index 92e13383..4a396f59 100644
--- a/daemon-m40/src/main/java/org/apache/maven/cli/DaemonMavenCli.java
+++ b/daemon-m40/src/main/java/org/apache/maven/cli/DaemonMavenCli.java
@@ -22,6 +22,7 @@ import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.PrintStream;
+import java.nio.charset.Charset;
 import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -253,23 +254,20 @@ public class DaemonMavenCli implements DaemonCli {
     void cli(CliRequest cliRequest) throws Exception {
         CLIManager cliManager = newCLIManager();
 
-        List<String> args = new ArrayList<>();
         CommandLine mavenConfig = null;
         try {
             File configFile = new File(cliRequest.multiModuleProjectDirectory, 
MVN_MAVEN_CONFIG);
 
             if (configFile.isFile()) {
-                for (String arg : new 
String(Files.readAllBytes(configFile.toPath())).split("\\s+")) {
-                    if (!arg.isEmpty()) {
-                        args.add(arg);
+                try (Stream<String> lines = Files.lines(configFile.toPath(), 
Charset.defaultCharset())) {
+                    String[] args = lines.filter(arg -> 
!arg.isEmpty()).toArray(String[]::new);
+                    mavenConfig = cliManager.parse(args);
+                    List<?> unrecognized = mavenConfig.getArgList();
+                    if (!unrecognized.isEmpty()) {
+                        // This file can only contain options, not args (goals 
or phases)
+                        throw new ParseException("Unrecognized maven.config 
file entries: " + unrecognized);
                     }
                 }
-
-                mavenConfig = cliManager.parse(args.toArray(new String[0]));
-                List<?> unrecongized = mavenConfig.getArgList();
-                if (!unrecongized.isEmpty()) {
-                    throw new ParseException("Unrecognized maven.config 
entries: " + unrecongized);
-                }
             }
         } catch (ParseException e) {
             buildEventListener.log("Unable to parse maven.config: " + 
e.getMessage());

Reply via email to