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

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

commit fcffd344b31ddbe1d2bfaf38f242584298c05310
Author: benjobs <[email protected]>
AuthorDate: Sat Dec 2 12:12:34 2023 +0800

    [Improve] mavenWrapper improvement
---
 .mvn/wrapper/MavenWrapperHelper.java               |  38 ++++--
 .mvn/wrapper/maven-wrapper.properties              |   1 +
 build.sh                                           |  20 ----
 mvnw                                               | 129 ++++++++++++---------
 .../streampark/console/core/entity/Project.java    |  10 --
 5 files changed, 108 insertions(+), 90 deletions(-)

diff --git a/.mvn/wrapper/MavenWrapperHelper.java 
b/.mvn/wrapper/MavenWrapperHelper.java
index 3772b1d7b..8d24566aa 100644
--- a/.mvn/wrapper/MavenWrapperHelper.java
+++ b/.mvn/wrapper/MavenWrapperHelper.java
@@ -15,6 +15,8 @@
  * limitations under the License.
  */
 
+import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.Authenticator;
@@ -24,8 +26,9 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.nio.file.StandardCopyOption;
+import java.security.MessageDigest;
 import java.util.Arrays;
-import java.util.jar.JarFile;
+import java.util.Properties;
 
 public final class MavenWrapperHelper {
 
@@ -33,7 +36,7 @@ public final class MavenWrapperHelper {
 
     private static final boolean VERBOSE = 
Boolean.parseBoolean(System.getenv("MVNW_VERBOSE"));
 
-    public static void main(String[] args) {
+    public static void main(String[] args) throws Exception {
         String action = args[0].toLowerCase();
         String[] actionArgs = Arrays.copyOfRange(args, 1, args.length);
         switch (action) {
@@ -60,12 +63,16 @@ public final class MavenWrapperHelper {
                 break;
             case "verify":
                 String wrapperJar = actionArgs[0];
+                String propertiesPath = actionArgs[1];
                 log("maven-wrapper file checking: " + wrapperJar);
-                try (JarFile ignored = new JarFile(wrapperJar, true)) {
-                    System.exit(0);
-                } catch (Exception e) {
-                    System.exit(1);
+                Properties properties = new Properties();
+                properties.load(Files.newInputStream(new 
File(propertiesPath).toPath()));
+                String wrapperMd5 = properties.getProperty("wrapperMd5");
+                if (wrapperMd5 == null) {
+                    System.err.println("wrapperMd5 not in " + propertiesPath);
                 }
+                String fileMd5 = getFileMd5(wrapperJar);
+                System.exit(wrapperMd5.equals(fileMd5) ? 0 : 1);
             default:
                 throw new UnsupportedOperationException("Unknown action \"" + 
action + "\".");
         }
@@ -90,9 +97,26 @@ public final class MavenWrapperHelper {
         log(" - Downloader complete");
     }
 
+    public static String getFileMd5(String path) throws Exception {
+        MessageDigest md5 = MessageDigest.getInstance("MD5");
+        try (FileInputStream inputStream = new FileInputStream(path)) {
+            byte[] buffer = new byte[1024];
+            int len;
+            while ((len = inputStream.read(buffer)) != -1) {
+                md5.update(buffer, 0, len);
+            }
+            byte[] byteArray = md5.digest();
+            StringBuilder sb = new StringBuilder();
+            for (byte b : byteArray) {
+                sb.append(String.format("%02x", b));
+            }
+            return sb.toString();
+        }
+    }
+
     private static void log(String msg) {
         if (VERBOSE) {
             System.out.println(msg);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/.mvn/wrapper/maven-wrapper.properties 
b/.mvn/wrapper/maven-wrapper.properties
index fde9af104..e42c9fef2 100644
--- a/.mvn/wrapper/maven-wrapper.properties
+++ b/.mvn/wrapper/maven-wrapper.properties
@@ -17,3 +17,4 @@
 
 
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.4/apache-maven-3.8.4-bin.zip
 
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar
+wrapperMd5=6058337c6ed4603858c3b72f754efa9b
diff --git a/build.sh b/build.sh
index d04e04887..d5ff63653 100755
--- a/build.sh
+++ b/build.sh
@@ -205,26 +205,6 @@ build() {
 
         please visit: https://streampark.apache.org/docs/user-guide/deployment 
for more detail. \n"""
       fi
-    else
-      javaSource="$PRG_DIR/.mvn/wrapper/MavenWrapperHelper.java"
-      javaClass="$PRG_DIR/.mvn/wrapper/MavenWrapperHelper.class"
-      wrapperJarPath="$PRG_DIR/.mvn/wrapper/maven-wrapper.jar"
-      # For Cygwin, switch paths to Windows format before running javac
-      if $cygwin; then
-        javaSource=$(cygpath --path --windows "$javaSource")
-        javaClass=$(cygpath --path --windows "$javaClass")
-      fi
-      if [ -e "$javaSource" ]; then
-        [ ! -e "$javaClass" ] && ("$JAVA_HOME/bin/javac" "$javaSource")
-        if [ -e "$javaClass" ]; then
-          ("$JAVA_HOME/bin/java" -cp "$PRG_DIR/.mvn/wrapper" 
MavenWrapperHelper "verify" "$wrapperJarPath")
-          if [ $? -eq 1 ]; then
-            echo_r "Error: $wrapperJarPath is invalid. retry download it and 
build project again..."
-            rm -f $wrapperJarPath
-            build $scalaArg $modeArg
-          fi
-        fi
-      fi
     fi
   fi
 }
diff --git a/mvnw b/mvnw
index 916dee8a3..d5a26d254 100755
--- a/mvnw
+++ b/mvnw
@@ -188,64 +188,87 @@ log "$MAVEN_PROJECTBASEDIR"
 # This allows using the maven wrapper in projects that prohibit checking in 
binary data.
 
##########################################################################################
 wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar"
+javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperHelper.java"
+javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperHelper.class"
+wrapperProperties="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
+# For Cygwin, switch paths to Windows format before running javac
+if $cygwin; then
+  javaSource=$(cygpath --path --windows "$javaSource")
+  javaClass=$(cygpath --path --windows "$javaClass")
+fi
+
+if [ ! -e "$javaSource" ]; then
+  error "ERROR: $javaSource not exists."
+  exit 1
+fi
+
+if [ ! -e "$javaClass" ]; then
+  log " - Compiling $javaClass starting ..."
+  ("$JAVA_HOME/bin/javac" "$javaSource")
+fi
+
 if [ -r "$wrapperJarPath" ]; then
-    log "Found $wrapperJarPath"
-else
-    log "Couldn't find $wrapperJarPath, downloading it ..."
+  log "Found $wrapperJarPath"
+  log "Check found $wrapperJarPath starting"
+  ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperHelper "verify" 
"$wrapperJarPath" "$wrapperProperties")
+  if [ $? -eq 1 ]; then
+    echo "WARN: Check found $wrapperJarPath invalided."
+    rm -f $wrapperJarPath
+  fi
+fi
 
-    if [ -n "$MVNW_REPOURL" ]; then
-      
wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
+if [ ! -e "$wrapperJarPath" ]; then
+  log " - downloading wrapperJar ..."
+  if [ -n "$MVNW_REPOURL" ]; then
+    
wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
+  else
+    
wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar";
+  fi
+  while IFS="=" read -r key value; do
+    # Remove '\r' from value to allow usage on windows as IFS does not 
consider '\r' as a separator ( considers space, tab, new line ('\n'), and 
custom '=' )
+    safeValue=$(echo "$value" | tr -d '\r')
+    case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;;
+    esac
+  done < $wrapperProperties
+  log "Downloading from: $wrapperUrl"
+
+  if $cygwin; then
+    wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath")
+  fi
+
+  if command -v wget > /dev/null; then
+    log "Found wget ... using wget"
+    [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet"
+    if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
+      wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
     else
-      
wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar";
+      wget $QUIET --http-user="$MVNW_USERNAME" 
--http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f 
"$wrapperJarPath"
     fi
-    while IFS="=" read -r key value; do
-      # Remove '\r' from value to allow usage on windows as IFS does not 
consider '\r' as a separator ( considers space, tab, new line ('\n'), and 
custom '=' )
-      safeValue=$(echo "$value" | tr -d '\r')
-      case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;;
-      esac
-    done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
-    log "Downloading from: $wrapperUrl"
-
-    if $cygwin; then
-      wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath")
-    fi
-
-    if command -v wget > /dev/null; then
-        log "Found wget ... using wget"
-        [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet"
-        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
-            wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f 
"$wrapperJarPath"
-        else
-            wget $QUIET --http-user="$MVNW_USERNAME" 
--http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f 
"$wrapperJarPath"
-        fi
-    elif command -v curl > /dev/null; then
-        log "Found curl ... using curl"
-        [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent"
-        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
-            curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f 
"$wrapperJarPath"
-        else
-            curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o 
"$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
-        fi
+  elif command -v curl > /dev/null; then
+    log "Found curl ... using curl"
+    [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent"
+    if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
+      curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f 
"$wrapperJarPath"
     else
-        log "Falling back to using Java to download"
-        javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperHelper.java"
-        javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperHelper.class"
-        # For Cygwin, switch paths to Windows format before running javac
-        if $cygwin; then
-          javaSource=$(cygpath --path --windows "$javaSource")
-          javaClass=$(cygpath --path --windows "$javaClass")
-        fi
-        if [ -e "$javaSource" ]; then
-            if [ ! -e "$javaClass" ]; then
-                log " - Compiling MavenWrapperHelper.java ..."
-                ("$JAVA_HOME/bin/javac" "$javaSource")
-            fi
-            if [ -e "$javaClass" ]; then
-                log " - Running MavenWrapperHelper.java ..."
-                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperHelper 
"download" "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath"
-            fi
-        fi
+      curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" 
"$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
     fi
+  else
+    log "Falling back to using Java to download"
+    log " - Running MavenWrapperHelper.java ..."
+    ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperHelper "download" 
"$wrapperUrl" "$wrapperJarPath")
+    if [ $? -ne 0 ]; then
+      rm -f "$wrapperJarPath"
+      echo "ERROR: download wrapperJar by Java failed, please retry"
+      exit 1;
+    fi
+  fi
+
+  log "Check $wrapperJarPath."
+  ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperHelper "verify" 
"$wrapperJarPath" "$wrapperProperties")
+  if [ $? -eq 1 ]; then
+    echo "ERROR: Check $wrapperJarPath invalided, please retry"
+    exit 1
+  fi
 fi
 
##########################################################################################
 # End of extension
@@ -256,7 +279,7 @@ wrapperSha256Sum=""
 while IFS="=" read -r key value; do
   case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;;
   esac
-done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
+done < $wrapperProperties
 if [ -n "$wrapperSha256Sum" ]; then
   wrapperSha256Result=false
   if command -v sha256sum > /dev/null; then
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 aaa6d2970..316daf87a 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
@@ -47,7 +47,6 @@ import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
-import java.util.jar.JarFile;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -202,15 +201,6 @@ public class Project implements Serializable {
     try {
       CommandUtils.execute(mvn + " --version");
     } catch (Exception e) {
-      File wrapperJar = new 
File(WebUtils.getAppHome().concat("/.mvn/wrapper/maven-wrapper.jar"));
-      if (wrapperJar.exists()) {
-        try {
-          JarFile jarFile = new JarFile(wrapperJar, true);
-          jarFile.close();
-        } catch (Exception ignored) {
-          FileUtils.deleteQuietly(wrapperJar);
-        }
-      }
       if (windows) {
         mvn = WebUtils.getAppHome().concat("/bin/mvnw.cmd");
       } else {

Reply via email to