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

benjobs pushed a commit to branch maven-args
in repository https://gitbox.apache.org/repos/asf/incubator-streampark.git

commit c4817336d06348a4a5facd6d605556ea680b7c57
Author: benjobs <[email protected]>
AuthorDate: Thu Nov 30 20:44:51 2023 +0800

    [Improve] maven build args improvement
---
 .../streampark/console/core/entity/Project.java    | 20 +++++++++++++-----
 .../console/base/util/FileUtilsTest.java           | 24 ++++++++++++++++++++++
 2 files changed, 39 insertions(+), 5 deletions(-)

diff --git 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/Project.java
 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/Project.java
index 875c5a317..965f0dbea 100644
--- 
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/Project.java
+++ 
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/entity/Project.java
@@ -44,6 +44,7 @@ import org.eclipse.jgit.lib.Constants;
 import java.io.File;
 import java.io.IOException;
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
@@ -216,7 +217,7 @@ public class Project implements Serializable {
     StringBuilder cmdBuffer = new StringBuilder(mvn).append(" clean package 
-DskipTests ");
 
     if (StringUtils.isNotBlank(this.buildArgs)) {
-      List<String> dangerArgs = getLogicalOperators(this.buildArgs);
+      List<String> dangerArgs = getDangerArgs(this.buildArgs);
       if (dangerArgs.isEmpty()) {
         cmdBuffer.append(this.buildArgs.trim());
       } else {
@@ -229,7 +230,7 @@ public class Project implements Serializable {
 
     String setting = 
InternalConfigHolder.get(CommonConfig.MAVEN_SETTINGS_PATH());
     if (StringUtils.isNotBlank(setting)) {
-      List<String> dangerArgs = getLogicalOperators(setting);
+      List<String> dangerArgs = getDangerArgs(setting);
       if (dangerArgs.isEmpty()) {
         File file = new File(setting);
         if (file.exists() && file.isFile()) {
@@ -248,9 +249,18 @@ public class Project implements Serializable {
     return cmdBuffer.toString();
   }
 
-  private List<String> getLogicalOperators(String param) {
-    List<String> dangerArgs = Arrays.asList(" || ", " | ", " && ", " & ");
-    return 
dangerArgs.stream().filter(param::contains).collect(Collectors.toList());
+  private List<String> getDangerArgs(String param) {
+    List<String> dangerArgs = Arrays.asList("|", "&");
+    String[] args = param.split("\\s+");
+    List<String> result = new ArrayList<>();
+    for (String arg : args) {
+      for (String danger : dangerArgs) {
+        if (arg.startsWith(danger)) {
+          result.add(arg);
+        }
+      }
+    }
+    return result;
   }
 
   @JsonIgnore
diff --git 
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/base/util/FileUtilsTest.java
 
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/base/util/FileUtilsTest.java
index 57db8581c..08fe46bb4 100644
--- 
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/base/util/FileUtilsTest.java
+++ 
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/base/util/FileUtilsTest.java
@@ -26,6 +26,9 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 import java.util.Random;
 
 /** Test for {@link FileUtils} */
@@ -106,4 +109,25 @@ class FileUtilsTest {
     }
     Assertions.assertArrayEquals(fileBytes, readBytes);
   }
+
+  @Test
+  public void testDangerArgs() {
+    String param = "mvn clean | echo \"ccc\"";
+    List<String> dangerArgs = getDangerArgs(param);
+    Assertions.assertEquals(dangerArgs.size(), 1);
+  }
+
+  private List<String> getDangerArgs(String param) {
+    List<String> dangerArgs = Arrays.asList("|", "&");
+    String[] args = param.split("\\s+");
+    List<String> result = new ArrayList<>();
+    for (String arg : args) {
+      for (String danger : dangerArgs) {
+        if (arg.startsWith(danger)) {
+          result.add(arg);
+        }
+      }
+    }
+    return result;
+  }
 }

Reply via email to