Преглед на файлове

Updated L2J CLI to Java 21

Zoey76 преди 1 година
родител
ревизия
9b40112c7f

+ 1 - 0
.gitignore

@@ -3,4 +3,5 @@
 .settings/
 target/
 dumps/
+.idea/
 *.iml

+ 0 - 117
.mvn/wrapper/MavenWrapperDownloader.java

@@ -1,117 +0,0 @@
-/*
- * Copyright 2007-present the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-import java.net.*;
-import java.io.*;
-import java.nio.channels.*;
-import java.util.Properties;
-
-public class MavenWrapperDownloader {
-
-    private static final String WRAPPER_VERSION = "0.5.6";
-    /**
-     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
-     */
-    private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
-        + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
-
-    /**
-     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
-     * use instead of the default one.
-     */
-    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
-            ".mvn/wrapper/maven-wrapper.properties";
-
-    /**
-     * Path where the maven-wrapper.jar will be saved to.
-     */
-    private static final String MAVEN_WRAPPER_JAR_PATH =
-            ".mvn/wrapper/maven-wrapper.jar";
-
-    /**
-     * Name of the property which should be used to override the default download url for the wrapper.
-     */
-    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
-
-    public static void main(String args[]) {
-        System.out.println("- Downloader started");
-        File baseDirectory = new File(args[0]);
-        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
-
-        // If the maven-wrapper.properties exists, read it and check if it contains a custom
-        // wrapperUrl parameter.
-        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
-        String url = DEFAULT_DOWNLOAD_URL;
-        if(mavenWrapperPropertyFile.exists()) {
-            FileInputStream mavenWrapperPropertyFileInputStream = null;
-            try {
-                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
-                Properties mavenWrapperProperties = new Properties();
-                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
-                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
-            } catch (IOException e) {
-                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
-            } finally {
-                try {
-                    if(mavenWrapperPropertyFileInputStream != null) {
-                        mavenWrapperPropertyFileInputStream.close();
-                    }
-                } catch (IOException e) {
-                    // Ignore ...
-                }
-            }
-        }
-        System.out.println("- Downloading from: " + url);
-
-        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
-        if(!outputFile.getParentFile().exists()) {
-            if(!outputFile.getParentFile().mkdirs()) {
-                System.out.println(
-                        "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
-            }
-        }
-        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
-        try {
-            downloadFileFromURL(url, outputFile);
-            System.out.println("Done");
-            System.exit(0);
-        } catch (Throwable e) {
-            System.out.println("- Error downloading");
-            e.printStackTrace();
-            System.exit(1);
-        }
-    }
-
-    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
-        if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
-            String username = System.getenv("MVNW_USERNAME");
-            char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
-            Authenticator.setDefault(new Authenticator() {
-                @Override
-                protected PasswordAuthentication getPasswordAuthentication() {
-                    return new PasswordAuthentication(username, password);
-                }
-            });
-        }
-        URL website = new URL(urlString);
-        ReadableByteChannel rbc;
-        rbc = Channels.newChannel(website.openStream());
-        FileOutputStream fos = new FileOutputStream(destination);
-        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
-        fos.close();
-        rbc.close();
-    }
-
-}

BIN
.mvn/wrapper/maven-wrapper.jar


+ 18 - 2
.mvn/wrapper/maven-wrapper.properties

@@ -1,2 +1,18 @@
-distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
-wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.5/apache-maven-3.9.5-bin.zip
+wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar

+ 12 - 12
bitbucket-pipelines.yml

@@ -1,21 +1,21 @@
-image: openjdk:17-alpine
+image: eclipse-temurin:21.0.1_12-jdk-ubi9-minimal
 
 pipelines:
    default:
-      - step:
+   -  step:
          caches:
-          - maven
+         - maven
          script:
-          - /bin/sh mvnw install
+         - /bin/sh mvnw install
          artifacts:
-          - target/*.zip
-      - step:
+         - target/*.zip
+   -  step:
          deployment: Production
          script:
-          - pipe: atlassian/ftp-deploy:0.3.7
+         -  pipe: atlassian/ftp-deploy:0.6.0
             variables:
-              USER: $FTP_USER
-              PASSWORD: $FTP_PASSWORD
-              SERVER: $FTP_HOST
-              REMOTE_PATH: $FTP_REMOTE_PATH
-              LOCAL_PATH: 'target/'
+               USER: $FTP_USER
+               PASSWORD: $FTP_PASSWORD
+               SERVER: $FTP_HOST
+               REMOTE_PATH: $FTP_REMOTE_PATH
+               LOCAL_PATH: target/

+ 38 - 61
mvnw

@@ -19,7 +19,7 @@
 # ----------------------------------------------------------------------------
 
 # ----------------------------------------------------------------------------
-# Maven Start Up Batch script
+# Apache Maven Wrapper startup batch script, version 3.1.1
 #
 # Required ENV vars:
 # ------------------
@@ -27,7 +27,6 @@
 #
 # Optional ENV vars
 # -----------------
-#   M2_HOME - location of maven2's installed home dir
 #   MAVEN_OPTS - parameters passed to the Java VM when running Maven
 #     e.g. to debug Maven itself, use
 #       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@@ -36,6 +35,10 @@
 
 if [ -z "$MAVEN_SKIP_RC" ] ; then
 
+  if [ -f /usr/local/etc/mavenrc ] ; then
+    . /usr/local/etc/mavenrc
+  fi
+
   if [ -f /etc/mavenrc ] ; then
     . /etc/mavenrc
   fi
@@ -58,9 +61,9 @@ case "`uname`" in
     # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
     if [ -z "$JAVA_HOME" ]; then
       if [ -x "/usr/libexec/java_home" ]; then
-        export JAVA_HOME="`/usr/libexec/java_home`"
+        JAVA_HOME="`/usr/libexec/java_home`"; export JAVA_HOME
       else
-        export JAVA_HOME="/Library/Java/Home"
+        JAVA_HOME="/Library/Java/Home"; export JAVA_HOME
       fi
     fi
     ;;
@@ -72,36 +75,8 @@ if [ -z "$JAVA_HOME" ] ; then
   fi
 fi
 
-if [ -z "$M2_HOME" ] ; then
-  ## resolve links - $0 may be a link to maven's home
-  PRG="$0"
-
-  # need this for relative symlinks
-  while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '/.*' > /dev/null; then
-      PRG="$link"
-    else
-      PRG="`dirname "$PRG"`/$link"
-    fi
-  done
-
-  saveddir=`pwd`
-
-  M2_HOME=`dirname "$PRG"`/..
-
-  # make it fully qualified
-  M2_HOME=`cd "$M2_HOME" && pwd`
-
-  cd "$saveddir"
-  # echo Using m2 at $M2_HOME
-fi
-
 # For Cygwin, ensure paths are in UNIX format before anything is touched
 if $cygwin ; then
-  [ -n "$M2_HOME" ] &&
-    M2_HOME=`cygpath --unix "$M2_HOME"`
   [ -n "$JAVA_HOME" ] &&
     JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
   [ -n "$CLASSPATH" ] &&
@@ -110,8 +85,6 @@ fi
 
 # For Mingw, ensure paths are in UNIX format before anything is touched
 if $mingw ; then
-  [ -n "$M2_HOME" ] &&
-    M2_HOME="`(cd "$M2_HOME"; pwd)`"
   [ -n "$JAVA_HOME" ] &&
     JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
 fi
@@ -145,7 +118,7 @@ if [ -z "$JAVACMD" ] ; then
       JAVACMD="$JAVA_HOME/bin/java"
     fi
   else
-    JAVACMD="`which java`"
+    JAVACMD="`\\unset -f command; \\command -v java`"
   fi
 fi
 
@@ -159,12 +132,9 @@ if [ -z "$JAVA_HOME" ] ; then
   echo "Warning: JAVA_HOME environment variable is not set."
 fi
 
-CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
-
 # traverses directory structure from process work directory to filesystem root
 # first directory with .mvn subdirectory is considered project base directory
 find_maven_basedir() {
-
   if [ -z "$1" ]
   then
     echo "Path not specified to find_maven_basedir"
@@ -184,7 +154,7 @@ find_maven_basedir() {
     fi
     # end of workaround
   done
-  echo "${basedir}"
+  printf '%s' "$(cd "$basedir"; pwd)"
 }
 
 # concatenates all lines of a file
@@ -194,11 +164,16 @@ concat_lines() {
   fi
 }
 
-BASE_DIR=`find_maven_basedir "$(pwd)"`
+BASE_DIR=$(find_maven_basedir "$(dirname $0)")
 if [ -z "$BASE_DIR" ]; then
   exit 1;
 fi
 
+MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR
+if [ "$MVNW_VERBOSE" = true ]; then
+  echo $MAVEN_PROJECTBASEDIR
+fi
+
 ##########################################################################################
 # Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
 # This allows using the maven wrapper in projects that prohibit checking in binary data.
@@ -212,16 +187,16 @@ else
       echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
     fi
     if [ -n "$MVNW_REPOURL" ]; then
-      jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
+      wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar"
     else
-      jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
+      wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar"
     fi
     while IFS="=" read key value; do
-      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
+      case "$key" in (wrapperUrl) wrapperUrl="$value"; break ;;
       esac
     done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
     if [ "$MVNW_VERBOSE" = true ]; then
-      echo "Downloading from: $jarUrl"
+      echo "Downloading from: $wrapperUrl"
     fi
     wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
     if $cygwin; then
@@ -229,42 +204,49 @@ else
     fi
 
     if command -v wget > /dev/null; then
+        QUIET="--quiet"
         if [ "$MVNW_VERBOSE" = true ]; then
           echo "Found wget ... using wget"
+          QUIET=""
         fi
         if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
-            wget "$jarUrl" -O "$wrapperJarPath"
+            wget $QUIET "$wrapperUrl" -O "$wrapperJarPath"
         else
-            wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
+            wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath"
         fi
+        [ $? -eq 0 ] || rm -f "$wrapperJarPath"
     elif command -v curl > /dev/null; then
+        QUIET="--silent"
         if [ "$MVNW_VERBOSE" = true ]; then
           echo "Found curl ... using curl"
+          QUIET=""
         fi
         if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
-            curl -o "$wrapperJarPath" "$jarUrl" -f
+            curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L
         else
-            curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
+            curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L
         fi
-
+        [ $? -eq 0 ] || rm -f "$wrapperJarPath"
     else
         if [ "$MVNW_VERBOSE" = true ]; then
           echo "Falling back to using Java to download"
         fi
-        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
+        javaSource="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
+        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.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 "$javaClass" ]; then
-            if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
+        if [ -e "$javaSource" ]; then
+            if [ ! -e "$javaClass" ]; then
                 if [ "$MVNW_VERBOSE" = true ]; then
                   echo " - Compiling MavenWrapperDownloader.java ..."
                 fi
                 # Compiling the Java class
-                ("$JAVA_HOME/bin/javac" "$javaClass")
+                ("$JAVA_HOME/bin/javac" "$javaSource")
             fi
-            if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
+            if [ -e "$javaClass" ]; then
                 # Running the downloader
                 if [ "$MVNW_VERBOSE" = true ]; then
                   echo " - Running MavenWrapperDownloader.java ..."
@@ -278,16 +260,10 @@ fi
 # End of extension
 ##########################################################################################
 
-export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
-if [ "$MVNW_VERBOSE" = true ]; then
-  echo $MAVEN_PROJECTBASEDIR
-fi
 MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
 
 # For Cygwin, switch paths to Windows format before running java
 if $cygwin; then
-  [ -n "$M2_HOME" ] &&
-    M2_HOME=`cygpath --path --windows "$M2_HOME"`
   [ -n "$JAVA_HOME" ] &&
     JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
   [ -n "$CLASSPATH" ] &&
@@ -305,6 +281,7 @@ WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
 
 exec "$JAVACMD" \
   $MAVEN_OPTS \
+  $MAVEN_DEBUG_OPTS \
   -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
-  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
+  "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
   ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"

+ 22 - 17
mvnw.cmd

@@ -18,13 +18,12 @@
 @REM ----------------------------------------------------------------------------
 
 @REM ----------------------------------------------------------------------------
-@REM Maven Start Up Batch script
+@REM Apache Maven Wrapper startup batch script, version 3.1.1
 @REM
 @REM Required ENV vars:
 @REM JAVA_HOME - location of a JDK home dir
 @REM
 @REM Optional ENV vars
-@REM M2_HOME - location of maven2's installed home dir
 @REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
 @REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
 @REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@@ -46,8 +45,8 @@ if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
 @REM Execute a user defined script before this one
 if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
 @REM check for pre script, once with legacy .bat ending and once with .cmd ending
-if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
-if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
+if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
+if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
 :skipRcPre
 
 @setlocal
@@ -120,10 +119,10 @@ SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
 set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
 set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
 
-set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
+set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar"
 
-FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
-    IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
+FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
+    IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B
 )
 
 @REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@@ -134,11 +133,11 @@ if exist %WRAPPER_JAR% (
     )
 ) else (
     if not "%MVNW_REPOURL%" == "" (
-        SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
+        SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar"
     )
     if "%MVNW_VERBOSE%" == "true" (
         echo Couldn't find %WRAPPER_JAR%, downloading it ...
-        echo Downloading from: %DOWNLOAD_URL%
+        echo Downloading from: %WRAPPER_URL%
     )
 
     powershell -Command "&{"^
@@ -146,7 +145,7 @@ if exist %WRAPPER_JAR% (
 		"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
 		"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
 		"}"^
-		"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
+		"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^
 		"}"
     if "%MVNW_VERBOSE%" == "true" (
         echo Finished downloading %WRAPPER_JAR%
@@ -158,7 +157,13 @@ if exist %WRAPPER_JAR% (
 @REM work with both Windows and non-Windows executions.
 set MAVEN_CMD_LINE_ARGS=%*
 
-%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
+%MAVEN_JAVA_EXE% ^
+  %JVM_CONFIG_MAVEN_PROPS% ^
+  %MAVEN_OPTS% ^
+  %MAVEN_DEBUG_OPTS% ^
+  -classpath %WRAPPER_JAR% ^
+  "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
+  %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
 if ERRORLEVEL 1 goto error
 goto end
 
@@ -168,15 +173,15 @@ set ERROR_CODE=1
 :end
 @endlocal & set ERROR_CODE=%ERROR_CODE%
 
-if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
+if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
 @REM check for post script, once with legacy .bat ending and once with .cmd ending
-if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
-if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
+if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
+if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
 :skipRcPost
 
 @REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
-if "%MAVEN_BATCH_PAUSE%" == "on" pause
+if "%MAVEN_BATCH_PAUSE%"=="on" pause
 
-if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
+if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
 
-exit /B %ERROR_CODE%
+cmd /C exit /B %ERROR_CODE%

+ 18 - 16
pom.xml

@@ -3,32 +3,34 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>com.l2jserver</groupId>
 	<artifactId>l2j-server-cli</artifactId>
-	<version>1.1.0</version>
+	<version>1.2.0</version>
 	<name>L2J Server Command Line</name>
 	<properties>
-		<maven.compiler.source>17</maven.compiler.source>
-		<maven.compiler.target>17</maven.compiler.target>
+		<maven.compiler.source>21</maven.compiler.source>
+		<maven.compiler.target>21</maven.compiler.target>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 		<!-- Dependencies -->
-		<picocli.version>4.7.0</picocli.version>
-		<jgit.version>6.4.0.202211300538-r</jgit.version>
-		<slf4j.version>1.7.30</slf4j.version>
-		<log4j.version>2.19.0</log4j.version>
-		<mysql-connector-j.version>8.0.32</mysql-connector-j.version>
-		<mariadb-java-client.version>3.1.1</mariadb-java-client.version>
-		<mssql-jdbc.version>11.2.3.jre17</mssql-jdbc.version>
-		<postgresql.version>42.5.1</postgresql.version>
-		<hsqldb.version>2.7.1</hsqldb.version>
+		<picocli.version>4.7.5</picocli.version>
+		<jgit.version>6.7.0.202309050840-r</jgit.version>
+		<slf4j.version>2.0.9</slf4j.version>
+		<log4j.version>2.22.0</log4j.version>
+		<mysql-connector-j.version>8.2.0</mysql-connector-j.version>
+		<mariadb-java-client.version>3.3.1</mariadb-java-client.version>
+		<mssql-jdbc.version>12.4.2.jre11</mssql-jdbc.version>
+		<postgresql.version>42.7.0</postgresql.version>
+		<hsqldb.version>2.7.2</hsqldb.version>
 		<h2.version>1.4.200</h2.version>
-		<derbyclient.version>10.16.1.1</derbyclient.version>
+		<derbyclient.version>10.17.1.0</derbyclient.version>
 		<asciitable.version>0.3.2</asciitable.version>
 		<owner.version>1.0.12</owner.version>
-		<l2j-server-commons.version>2.6.3.0</l2j-server-commons.version>
 		<maven-invoker.version>3.2.0</maven-invoker.version>
+		<!-- L2J -->
+		<l2j-server-commons.version>2.6.7.0</l2j-server-commons.version>
 		<!-- Plugins -->
-		<maven-dependency-plugin.version>3.5.0</maven-dependency-plugin.version>
+		<maven-dependency-plugin.version>3.6.1</maven-dependency-plugin.version>
 		<maven-jar-plugin.version>3.3.0</maven-jar-plugin.version>
-		<maven-assembly-plugin.version>3.4.2</maven-assembly-plugin.version>
+		<maven-assembly-plugin.version>3.6.0</maven-assembly-plugin.version>
 	</properties>
 	<repositories>
 		<repository>

+ 21 - 9
src/main/java/com/l2jserver/cli/command/BuildCommand.java

@@ -43,15 +43,27 @@ public class BuildCommand extends AbstractCommand {
 	
 	private static final Logger LOG = LoggerFactory.getLogger(BuildCommand.class);
 	
-	@Option(names = {"--login-directory", "-lsdir"}, defaultValue = DEFAULT_LOGIN_SOURCE_DIR, description = "Login directory")
-	private String loginDirectory = DEFAULT_LOGIN_SOURCE_DIR;
-	@Option(names = {"--game-directory", "-gsdir"}, defaultValue = DEFAULT_GAME_SOURCE_DIR, description = "Game directory")
-	private String gameDirectory = DEFAULT_GAME_SOURCE_DIR;
-	@Option(names = {"--datapack-directory", "-dpdir"}, defaultValue = DEFAULT_DATAPACK_SOURCE_DIR, description = "DataPack directory")
-	private String datapackDirectory = DEFAULT_DATAPACK_SOURCE_DIR;
-
-	@Option(names = {"--skip-tests", "-st"}, defaultValue = "true", description = "Skip Tests")
-	private boolean skipTests = true;
+	@Option(names = {
+		"--login-directory",
+		"-lsdir"
+	}, defaultValue = DEFAULT_LOGIN_SOURCE_DIR, description = "Login directory")
+	private final String loginDirectory = DEFAULT_LOGIN_SOURCE_DIR;
+	@Option(names = {
+		"--game-directory",
+		"-gsdir"
+	}, defaultValue = DEFAULT_GAME_SOURCE_DIR, description = "Game directory")
+	private final String gameDirectory = DEFAULT_GAME_SOURCE_DIR;
+	@Option(names = {
+		"--datapack-directory",
+		"-dpdir"
+	}, defaultValue = DEFAULT_DATAPACK_SOURCE_DIR, description = "DataPack directory")
+	private final String datapackDirectory = DEFAULT_DATAPACK_SOURCE_DIR;
+	
+	@Option(names = {
+		"--skip-tests",
+		"-st"
+	}, defaultValue = "true", description = "Skip Tests")
+	private final boolean skipTests = true;
 	
 	@Override
 	public void run() {

+ 25 - 7
src/main/java/com/l2jserver/cli/command/CodeCommand.java

@@ -43,18 +43,36 @@ public class CodeCommand extends AbstractCommand {
 	
 	private static final LoggerProgressMonitor LOGGER_PROGRESS_MONITOR = new LoggerProgressMonitor(LOG);
 	
-	@Option(names = {"--login-repository", "-lsrepo"}, defaultValue = DEFAULT_LOGIN_REPO, description = "Login repository")
+	@Option(names = {
+		"--login-repository",
+		"-lsrepo"
+	}, defaultValue = DEFAULT_LOGIN_REPO, description = "Login repository")
 	private String loginRepository = DEFAULT_LOGIN_REPO;
-	@Option(names = {"--game-repository", "-gsrepo"}, defaultValue = DEFAULT_GAME_REPO, description = "Game repository")
+	@Option(names = {
+		"--game-repository",
+		"-gsrepo"
+	}, defaultValue = DEFAULT_GAME_REPO, description = "Game repository")
 	private String gameRepository = DEFAULT_GAME_REPO;
-	@Option(names = {"--datapack-repository", "-dprepo"}, defaultValue = DEFAULT_DATAPACK_REPO, description = "Datapack repository")
+	@Option(names = {
+		"--datapack-repository",
+		"-dprepo"
+	}, defaultValue = DEFAULT_DATAPACK_REPO, description = "Datapack repository")
 	private String datapackRepository = DEFAULT_DATAPACK_REPO;
-
-	@Option(names = {"--login-directory", "-lsdir"}, defaultValue = DEFAULT_LOGIN_SOURCE_DIR, description = "Login directory")
+	
+	@Option(names = {
+		"--login-directory",
+		"-lsdir"
+	}, defaultValue = DEFAULT_LOGIN_SOURCE_DIR, description = "Login directory")
 	private String loginDirectory = DEFAULT_LOGIN_SOURCE_DIR;
-	@Option(names = {"--game-directory", "-gsdir"}, defaultValue = DEFAULT_GAME_SOURCE_DIR, description = "Game directory")
+	@Option(names = {
+		"--game-directory",
+		"-gsdir"
+	}, defaultValue = DEFAULT_GAME_SOURCE_DIR, description = "Game directory")
 	private String gameDirectory = DEFAULT_GAME_SOURCE_DIR;
-	@Option(names = {"--datapack-directory", "-dpdir"}, defaultValue = DEFAULT_DATAPACK_SOURCE_DIR, description = "DataPack directory")
+	@Option(names = {
+		"--datapack-directory",
+		"-dpdir"
+	}, defaultValue = DEFAULT_DATAPACK_SOURCE_DIR, description = "DataPack directory")
 	private String datapackDirectory = DEFAULT_DATAPACK_SOURCE_DIR;
 	
 	@Option(names = "--clone", defaultValue = "ALL", description = "Clone ALL|LOGIN|GAME|DATAPACK")

+ 25 - 7
src/main/java/com/l2jserver/cli/command/DeployCommand.java

@@ -44,18 +44,36 @@ import picocli.CommandLine.Option;
 public class DeployCommand extends AbstractCommand {
 	private static final Logger LOG = LoggerFactory.getLogger(DeployCommand.class);
 	
-	@Option(names = {"--login-source-directory", "-lssrc"}, defaultValue = DEFAULT_LOGIN_SOURCE_DIR, description = "Login directory")
+	@Option(names = {
+		"--login-source-directory",
+		"-lssrc"
+	}, defaultValue = DEFAULT_LOGIN_SOURCE_DIR, description = "Login directory")
 	private String loginSourceDirectory = DEFAULT_LOGIN_SOURCE_DIR;
-	@Option(names = {"--game-source-directory", "-gssrc"}, defaultValue = DEFAULT_GAME_SOURCE_DIR, description = "Game directory")
+	@Option(names = {
+		"--game-source-directory",
+		"-gssrc"
+	}, defaultValue = DEFAULT_GAME_SOURCE_DIR, description = "Game directory")
 	private String gameSourceDirectory = DEFAULT_GAME_SOURCE_DIR;
-	@Option(names = {"--datapack-source-directory", "-dpsrc"}, defaultValue = DEFAULT_DATAPACK_SOURCE_DIR, description = "DataPack directory")
+	@Option(names = {
+		"--datapack-source-directory",
+		"-dpsrc"
+	}, defaultValue = DEFAULT_DATAPACK_SOURCE_DIR, description = "DataPack directory")
 	private String datapackSourceDirectory = DEFAULT_DATAPACK_SOURCE_DIR;
-
-	@Option(names = {"--login-deploy-directory", "-lsdepl"}, defaultValue = DEFAULT_LOGIN_DEPLOY_DIR, description = "Login directory")
+	
+	@Option(names = {
+		"--login-deploy-directory",
+		"-lsdepl"
+	}, defaultValue = DEFAULT_LOGIN_DEPLOY_DIR, description = "Login directory")
 	private String loginDeployDirectory = DEFAULT_LOGIN_DEPLOY_DIR;
-	@Option(names = {"--game-deploy-directory", "-gsdepl"}, defaultValue = DEFAULT_GAME_DEPLOY_DIR, description = "Game directory")
+	@Option(names = {
+		"--game-deploy-directory",
+		"-gsdepl"
+	}, defaultValue = DEFAULT_GAME_DEPLOY_DIR, description = "Game directory")
 	private String gameDeployDirectory = DEFAULT_GAME_DEPLOY_DIR;
-	@Option(names = {"--datapack-deploy-directory", "-dpdepl"}, defaultValue = DEFAULT_DATAPACK_DEPLOY_DIR, description = "DataPack directory")
+	@Option(names = {
+		"--datapack-deploy-directory",
+		"-dpdepl"
+	}, defaultValue = DEFAULT_DATAPACK_DEPLOY_DIR, description = "DataPack directory")
 	private String datapackDeployDirectory = DEFAULT_DATAPACK_DEPLOY_DIR;
 	
 	@Override

+ 1 - 1
src/main/java/com/l2jserver/cli/command/account/AccountUpdateCommand.java

@@ -54,7 +54,7 @@ public class AccountUpdateCommand extends AbstractCommand {
 	public void run() {
 		System.out.println("Updating account " + username + " (" + accessLevel + ")");
 		
-		if (password != null && accessLevel != null) {
+		if ((password != null) && (accessLevel != null)) {
 			final var createdUpdated = AccountDAO.getInstance().upsert(username, password, accessLevel);
 			if (createdUpdated) {
 				System.out.println("Account " + username + " has been created or updated.");

+ 6 - 7
src/main/java/com/l2jserver/cli/command/database/DatabaseInstallCommand.java

@@ -115,17 +115,16 @@ public class DatabaseInstallCommand extends AbstractCommand {
 	}
 	
 	private AbstractDatabaseDAO databaseDAO() {
-		switch (serverType) {
-			case GAME: {
+		return switch (serverType) {
+			case GAME -> {
 				overrideConfigs(Configuration.gameServer());
-				return new GameServerDatabaseDAO();
+				yield new GameServerDatabaseDAO();
 			}
-			default:
-			case LOGIN: {
+			case LOGIN -> {
 				overrideConfigs(Configuration.loginServer());
-				return new LoginServerDatabaseDAO();
+				yield new LoginServerDatabaseDAO();
 			}
-		}
+		};
 	}
 	
 	private void overrideConfigs(Mutable databaseConfiguration) {

+ 3 - 3
src/main/java/com/l2jserver/cli/dao/AbstractDAO.java

@@ -51,9 +51,9 @@ class AbstractDAO {
 	private final String database;
 	
 	AbstractDAO(ServerConfiguration server) {
-		this.database = server.getDatabaseName();
+		database = server.getDatabaseName();
 		
-		this.connectionFactory = ConnectionFactory.builder() //
+		connectionFactory = ConnectionFactory.builder() //
 			.withDatabaseName(server.getDatabaseName()) //
 			.withUrl(server.getDatabaseURL()) //
 			.withUser(server.getDatabaseUser()) //
@@ -158,7 +158,7 @@ class AbstractDAO {
 							}
 							if (!dset.getString(4).isEmpty()) {
 								if (!keys.containsKey(dset.getString(4))) {
-									keys.put(dset.getString(4), new ArrayList<String>());
+									keys.put(dset.getString(4), new ArrayList<>());
 								}
 								keys.get(dset.getString(4)).add(dset.getString(1));
 							}

+ 5 - 5
src/main/java/com/l2jserver/cli/database/ConnectionFactory.java

@@ -37,11 +37,11 @@ public class ConnectionFactory {
 	private final Properties properties = new Properties();
 	
 	private ConnectionFactory(Builder builder) {
-		this.url = builder.url;
-		this.databaseName = builder.databaseName;
-		this.properties.setProperty("user", builder.user);
-		this.properties.setProperty("password", builder.password);
-		this.properties.putAll(DatabaseType.getType(builder.url).getParameters());
+		url = builder.url;
+		databaseName = builder.databaseName;
+		properties.setProperty("user", builder.user);
+		properties.setProperty("password", builder.password);
+		properties.putAll(DatabaseType.getType(builder.url).getParameters());
 	}
 	
 	public Connection getPlainConnection() {

+ 3 - 3
src/main/java/com/l2jserver/cli/database/DatabaseType.java

@@ -52,11 +52,11 @@ public enum DatabaseType {
 	
 	Properties properties;
 	
-	private DatabaseType(String name, String jdbcPrefix, boolean supported) {
+	DatabaseType(String name, String jdbcPrefix, boolean supported) {
 		this.name = name;
 		this.jdbcPrefix = jdbcPrefix;
 		this.supported = supported;
-		this.properties = new Properties();
+		properties = new Properties();
 	}
 	
 	public Properties getParameters() {
@@ -65,7 +65,7 @@ public enum DatabaseType {
 	
 	public static DatabaseType getType(String url) {
 		for (DatabaseType databaseType : DatabaseType.values()) {
-			if (url != null && url.startsWith("jdbc:" + databaseType.jdbcPrefix)) {
+			if ((url != null) && url.startsWith("jdbc:" + databaseType.jdbcPrefix)) {
 				return databaseType;
 			}
 		}

+ 14 - 9
src/main/java/com/l2jserver/cli/util/LoggerProgressMonitor.java

@@ -18,6 +18,8 @@
  */
 package com.l2jserver.cli.util;
 
+import java.time.Duration;
+
 import org.eclipse.jgit.lib.BatchingProgressMonitor;
 import org.slf4j.Logger;
 
@@ -34,14 +36,14 @@ public class LoggerProgressMonitor extends BatchingProgressMonitor {
 	}
 	
 	@Override
-	protected void onUpdate(String taskName, int workCurr) {
+	protected void onUpdate(String taskName, int workCurr, Duration duration) {
 		final var s = new StringBuilder();
 		format(s, taskName, workCurr);
 		send(s);
 	}
 	
 	@Override
-	protected void onEndTask(String taskName, int workCurr) {
+	protected void onEndTask(String taskName, int workCurr, Duration duration) {
 		final var s = new StringBuilder();
 		format(s, taskName, workCurr);
 		s.append("\n");
@@ -59,16 +61,16 @@ public class LoggerProgressMonitor extends BatchingProgressMonitor {
 	}
 	
 	@Override
-	protected void onUpdate(String taskName, int cmp, int totalWork, int pcnt) {
+	protected void onUpdate(String taskName, int workCurr, int workTotal, int percentDone, Duration duration) {
 		final var s = new StringBuilder();
-		format(s, taskName, cmp, totalWork, pcnt);
+		format(s, taskName, workCurr, workTotal, percentDone);
 		send(s);
 	}
 	
 	@Override
-	protected void onEndTask(String taskName, int cmp, int totalWork, int pcnt) {
+	protected void onEndTask(String taskName, int workCurr, int workTotal, int percentDone, Duration duration) {
 		final var s = new StringBuilder();
-		format(s, taskName, cmp, totalWork, pcnt);
+		format(s, taskName, workCurr, workTotal, percentDone);
 		s.append("\n");
 		send(s);
 	}
@@ -77,18 +79,21 @@ public class LoggerProgressMonitor extends BatchingProgressMonitor {
 		s.append("\r");
 		s.append(taskName);
 		s.append(": ");
-		while (s.length() < 25)
+		while (s.length() < 25) {
 			s.append(' ');
+		}
 		
 		String endStr = String.valueOf(totalWork);
 		StringBuilder curStr = new StringBuilder(String.valueOf(cmp));
 		while (curStr.length() < endStr.length()) {
 			curStr.insert(0, " ");
 		}
-		if (pcnt < 100)
+		if (pcnt < 100) {
 			s.append(' ');
-		if (pcnt < 10)
+		}
+		if (pcnt < 10) {
 			s.append(' ');
+		}
 		s.append(pcnt);
 		s.append("% (");
 		s.append(curStr);

+ 3 - 4
src/main/java/com/l2jserver/gui/editor/ConfigUserInterface.java

@@ -177,11 +177,10 @@ public class ConfigUserInterface extends JFrame implements ActionListener {
 			cons.gridy = 0;
 			cons.weighty = 0;
 			for (ConfigComment cc : cf.getConfigProperties()) {
-				if (!(cc instanceof ConfigProperty)) {
+				if (!(cc instanceof ConfigProperty cp)) {
 					continue;
 				}
 				
-				ConfigProperty cp = (ConfigProperty) cc;
 				cons.gridx = 0;
 				
 				JLabel keyLabel = new JLabel(cp.getDisplayName() + ':', new ImageIcon(getClass().getResource(IMAGE_PATH + "help.png")), SwingConstants.LEFT);
@@ -491,7 +490,7 @@ public class ConfigUserInterface extends JFrame implements ActionListener {
 		}
 	}
 	
-	public static enum ValueType {
+	public enum ValueType {
 		BOOLEAN(Boolean.class),
 		DOUBLE(Double.class),
 		INTEGER(Integer.class),
@@ -500,7 +499,7 @@ public class ConfigUserInterface extends JFrame implements ActionListener {
 		
 		private final Class<?> _type;
 		
-		private ValueType(Class<?> type) {
+		ValueType(Class<?> type) {
 			_type = type;
 		}