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

Reply via email to