From e527af347058d41367a4dcce1c76a8e739a61db0 Mon Sep 17 00:00:00 2001 From: Antoine Rey <antoine.rey@gmail.com> Date: Fri, 29 Mar 2019 08:44:59 +0100 Subject: [PATCH] Upgrade Maven wrapper to 3.5.4 --- .mvn/wrapper/MavenWrapperDownloader.java | 117 +++++++++++++++++++++++ .mvn/wrapper/maven-wrapper.jar | Bin 47610 -> 50709 bytes .mvn/wrapper/maven-wrapper.properties | 3 +- mvnw | 91 +++++++++++++++++- mvnw.cmd | 43 ++++++++- 5 files changed, 248 insertions(+), 6 deletions(-) create mode 100644 .mvn/wrapper/MavenWrapperDownloader.java diff --git a/.mvn/wrapper/MavenWrapperDownloader.java b/.mvn/wrapper/MavenWrapperDownloader.java new file mode 100644 index 00000000..1ef8d698 --- /dev/null +++ b/.mvn/wrapper/MavenWrapperDownloader.java @@ -0,0 +1,117 @@ +/* + * 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.4"; + /** + * 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(); + } + +} diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar index 9cc84ea9b4d95453115d0c26488d6a78694e0bc6..1914b842cfcbb00a843b5c458ad1db942c7aa522 100644 GIT binary patch delta 13009 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 delta 10126 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 I{@yYF4^#C&JOBUy diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties index 6c8c0e08..23fdba01 100644 --- a/.mvn/wrapper/maven-wrapper.properties +++ b/.mvn/wrapper/maven-wrapper.properties @@ -1 +1,2 @@ -distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.4/apache-maven-3.5.4-bin.zip +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.5.4/apache-maven-3.5.4-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.4/maven-wrapper-0.5.4.jar diff --git a/mvnw b/mvnw index 5bf251c0..35ff643b 100755 --- a/mvnw +++ b/mvnw @@ -108,13 +108,12 @@ if $cygwin ; then CLASSPATH=`cygpath --path --unix "$CLASSPATH"` fi -# For Migwn, ensure paths are in UNIX format before anything is touched +# 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)`" - # TODO classpath? fi if [ -z "$JAVA_HOME" ]; then @@ -200,8 +199,89 @@ if [ -z "$BASE_DIR" ]; then exit 1; 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. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + 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.4/maven-wrapper-0.5.4.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.4/maven-wrapper-0.5.4.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} -echo $MAVEN_PROJECTBASEDIR +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 @@ -216,6 +296,11 @@ if $cygwin; then MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` fi +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain exec "$JAVACMD" \ diff --git a/mvnw.cmd b/mvnw.cmd index 019bd74d..dae46d49 100644 --- a/mvnw.cmd +++ b/mvnw.cmd @@ -35,7 +35,9 @@ @REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' @echo off -@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' @if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% @REM set %HOME% to equivalent of $HOME @@ -115,10 +117,47 @@ for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do s :endReadAdditionalConfig 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.4/maven-wrapper-0.5.4.jar" + +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.4/maven-wrapper-0.5.4.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "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%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@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% %* if ERRORLEVEL 1 goto error goto end -- GitLab