This is an automated email from the ASF dual-hosted git repository. benjobs pushed a commit to branch maven in repository https://gitbox.apache.org/repos/asf/incubator-streampark.git
commit f5e098caaccbdbc93a445206c4ec79d30bff4ef0 Author: benjobs <[email protected]> AuthorDate: Thu Dec 21 23:40:06 2023 +0800 [Improve] maven build args improvement --- .../streampark/console/core/entity/Project.java | 35 +++++++++++++++------- 1 file changed, 25 insertions(+), 10 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 ae47d129a..658bb575f 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 @@ -46,6 +46,8 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; @Slf4j @@ -218,21 +220,21 @@ public class Project implements Serializable { StringBuilder cmdBuffer = new StringBuilder(mvn).append(" clean package -DskipTests "); if (StringUtils.isNotBlank(this.buildArgs)) { - List<String> dangerArgs = getDangerArgs(this.buildArgs); - if (dangerArgs.isEmpty()) { + String dangerArgs = getDangerArgs(this.buildArgs); + if (dangerArgs == null) { cmdBuffer.append(this.buildArgs.trim()); } else { throw new IllegalArgumentException( String.format( - "Invalid maven argument, dangerous operation symbol detected: %s, in your buildArgs: %s", - dangerArgs.stream().collect(Collectors.joining(",")), this.buildArgs)); + "Invalid maven argument, dangerous args: %s, in your buildArgs: %s", + dangerArgs, this.buildArgs)); } } String setting = InternalConfigHolder.get(CommonConfig.MAVEN_SETTINGS_PATH()); if (StringUtils.isNotBlank(setting)) { - List<String> dangerArgs = getDangerArgs(setting); - if (dangerArgs.isEmpty()) { + String dangerArgs = getDangerArgs(setting); + if (dangerArgs == null) { File file = new File(setting); if (file.exists() && file.isFile()) { cmdBuffer.append(" --settings ").append(setting); @@ -243,14 +245,24 @@ public class Project implements Serializable { } else { throw new IllegalArgumentException( String.format( - "Invalid maven-setting file path, dangerous operation symbol detected: %s, in your maven setting path: %s", - dangerArgs.stream().collect(Collectors.joining(",")), setting)); + "Invalid maven-setting file path, dangerous args: %s, in your maven setting path: %s", + dangerArgs, setting)); } } return cmdBuffer.toString(); } - private List<String> getDangerArgs(String param) { + private String getDangerArgs(String param) { + Pattern pattern = Pattern.compile("(`.*?`)|(\\$\\((.*?)\\))"); + Matcher matcher = pattern.matcher(param); + if (matcher.find()) { + String dangerArgs = matcher.group(1); + if (dangerArgs == null) { + dangerArgs = matcher.group(2); + } + return dangerArgs; + } + String[] args = param.split("\\s+"); List<String> dangerArgs = new ArrayList<>(); for (String arg : args) { @@ -271,7 +283,10 @@ public class Project implements Serializable { } } } - return dangerArgs; + if (!dangerArgs.isEmpty()) { + return dangerArgs.stream().collect(Collectors.joining(",")); + } + return null; } @JsonIgnore
