This is an automated email from the ASF dual-hosted git repository. hboutemy pushed a commit to branch MWRAPPER-16 in repository https://gitbox.apache.org/repos/asf/maven-wrapper-plugin.git
commit 58048e2c064862543ed76c63b43750acec57fdab Author: Hervé Boutemy <hbout...@apache.org> AuthorDate: Sat Nov 20 17:35:08 2021 +0100 [MWRAPPER-16] PoC call mvn(.cmd) script from mvnw(.cmd) --- maven-wrapper-distribution/src/assembly/maven/run | 16 +++++++++++++++- maven-wrapper-distribution/src/assembly/maven/run.cmd | 12 ++++++++++++ .../org/apache/maven/plugins/wrapper/WrapperMojo.java | 2 +- .../org/apache/maven/wrapper/BootstrapMainStarter.java | 4 +++- 4 files changed, 31 insertions(+), 3 deletions(-) diff --git a/maven-wrapper-distribution/src/assembly/maven/run b/maven-wrapper-distribution/src/assembly/maven/run index 69535d6..95897e9 100755 --- a/maven-wrapper-distribution/src/assembly/maven/run +++ b/maven-wrapper-distribution/src/assembly/maven/run @@ -8,7 +8,7 @@ if $cygwin || $mingw ; then MAVEN_PROJECTBASEDIR=`cygpath --windows "$MAVEN_PROJECTBASEDIR"` fi -exec "$JAVACMD" \ +"$JAVACMD" \ $MAVEN_OPTS \ $MAVEN_DEBUG_OPTS \ -classpath "$LAUNCHER_JAR" \ @@ -17,3 +17,17 @@ exec "$JAVACMD" \ "-Dlibrary.jansi.path=${MAVEN_HOME}/lib/jansi-native" \ "-Dmaven.multiModuleProjectDirectory=$MAVEN_PROJECTBASEDIR" \ $LAUNCHER_CLASS "$@" + +# read distributionUrl from $MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties +while IFS="=" read key value; do + case "$key" in (distributionUrl) distributionUrl="$value"; break ;; + esac +done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" + +# local distribution dir is distributionUrl basename without extension +distribution=`basename $distributionUrl .zip` + +mvn=~/.m2/wrapper/dists/$distribution/*/bin/mvn +echo "mvnw will call $mvn" + +exec $mvn "$@" diff --git a/maven-wrapper-distribution/src/assembly/maven/run.cmd b/maven-wrapper-distribution/src/assembly/maven/run.cmd index ac526f8..690f3fa 100755 --- a/maven-wrapper-distribution/src/assembly/maven/run.cmd +++ b/maven-wrapper-distribution/src/assembly/maven/run.cmd @@ -9,6 +9,18 @@ "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ %LAUNCHER_CLASS% %* if ERRORLEVEL 1 goto error + +@REM read distributionUrl from $MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="distributionUrl" SET DISTRIBUTION_URL=%%B +) + +for /F %i in (%DISTRIBUTION_URL%) do SET DISTRIBUTION=%~ni + +SET MVN=%USERPROFILE%\.m2\wrapper\dists\%DISTRIBUTION%/*/bin/mvn.cmd + +%MVN% %* + goto end :error diff --git a/maven-wrapper-plugin/src/main/java/org/apache/maven/plugins/wrapper/WrapperMojo.java b/maven-wrapper-plugin/src/main/java/org/apache/maven/plugins/wrapper/WrapperMojo.java index b8f5295..f745b8d 100644 --- a/maven-wrapper-plugin/src/main/java/org/apache/maven/plugins/wrapper/WrapperMojo.java +++ b/maven-wrapper-plugin/src/main/java/org/apache/maven/plugins/wrapper/WrapperMojo.java @@ -218,7 +218,7 @@ public class WrapperMojo extends AbstractMojo try ( BufferedWriter out = Files.newBufferedWriter( wrapperPropertiesFile ) ) { out.append( license ); - out.append( "distributionUrl=" + distributionUrl ); + out.append( "distributionUrl=" + distributionUrl + "\n" ); } } diff --git a/maven-wrapper/src/main/java/org/apache/maven/wrapper/BootstrapMainStarter.java b/maven-wrapper/src/main/java/org/apache/maven/wrapper/BootstrapMainStarter.java index 720b450..b29e2ab 100644 --- a/maven-wrapper/src/main/java/org/apache/maven/wrapper/BootstrapMainStarter.java +++ b/maven-wrapper/src/main/java/org/apache/maven/wrapper/BootstrapMainStarter.java @@ -31,6 +31,7 @@ import java.util.stream.Stream; * Maven starter, from a provided Maven home directory. * * @author Hans Dockter + * @deprecated will be removed once launching Maven is not done here but in mvnw script by calling mvn */ public class BootstrapMainStarter { @@ -47,7 +48,8 @@ public class BootstrapMainStarter System.setProperty( "classworlds.conf", mavenHome.resolve( "bin/m2.conf" ).toAbsolutePath().toString() ); Method mainMethod = mainClass.getMethod( "main", String[].class ); - mainMethod.invoke( null, new Object[] { args } ); + //mainMethod.invoke( null, new Object[] { args } ); + System.out.println( "Now, mvnw script should call " + mavenHome.toAbsolutePath().toString() + "/bin/mvn" ); } private Path findLauncherJar( Path mavenHome ) throws RuntimeException, IOException