You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2020/03/17 20:38:40 UTC

[maven-studies] branch maven-wrapper updated: Fix download bug Prepare for testing with maven-integration-testing

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

rfscholte pushed a commit to branch maven-wrapper
in repository https://gitbox.apache.org/repos/asf/maven-studies.git


The following commit(s) were added to refs/heads/maven-wrapper by this push:
     new e3e74ac  Fix download bug Prepare for testing with maven-integration-testing
e3e74ac is described below

commit e3e74ace909f86ed2d5bb57485f4a34608e4b424
Author: rfscholte <rf...@apache.org>
AuthorDate: Tue Mar 17 21:38:31 2020 +0100

    Fix download bug
    Prepare for testing with maven-integration-testing
---
 pom.xml                                            |  4 ++-
 src/assembly/bin.xml                               |  6 +++--
 src/assembly/{source.xml => script.xml}            |  9 +++++--
 .../shared/.mvn/wrapper/maven-wrapper.properties   |  5 ++--
 src/assembly/shared/mvnw                           |  4 +--
 src/assembly/shared/mvnw.cmd                       |  4 +--
 src/assembly/source.xml                            |  2 ++
 src/assembly/source/MavenWrapperDownloader.java    | 16 ++++++------
 .../java/org/apache/maven/wrapper/Installer.java   | 29 +++++++++++++++++++---
 .../org/apache/maven/wrapper/MavenWrapperMain.java | 12 ++++-----
 10 files changed, 61 insertions(+), 30 deletions(-)

diff --git a/pom.xml b/pom.xml
index 4dd34c9..420df7c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
     <version>34</version>
   </parent>
   <artifactId>maven-wrapper</artifactId>
-  <version>1.0.0-SNAPSHOT</version>
+  <version>3.7.0-SNAPSHOT</version>
 
   <name>Maven Wrapper</name>
   <licenses>
@@ -21,6 +21,7 @@
   </properties>
   
   <build>
+    <finalName>${project.artifactId}</finalName> <!-- to simplify installation for maven-integration-testing -->
     <plugins>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
@@ -35,6 +36,7 @@
         </executions>
         <configuration>
           <descriptors>
+            <descriptor>src/assembly/script.xml</descriptor>
             <descriptor>src/assembly/bin.xml</descriptor>
             <descriptor>src/assembly/source.xml</descriptor>
           </descriptors>
diff --git a/src/assembly/bin.xml b/src/assembly/bin.xml
index c4de11d..5f350a6 100644
--- a/src/assembly/bin.xml
+++ b/src/assembly/bin.xml
@@ -24,13 +24,15 @@ under the License.
     xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
   <id>bin</id>
   <formats>
-	<format>zip</format>
+    <format>tar.gz</format>
+    <format>zip</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>src/assembly/shared</directory>
       <outputDirectory>.</outputDirectory>
+      <filtered>true</filtered>
     </fileSet>
     <fileSet>
       <directory>target</directory>
@@ -42,7 +44,7 @@ under the License.
   </fileSets>
   <files>
     <file>
-      <source>target/maven-wrapper-${project.version}.jar</source>
+      <source>target/maven-wrapper.jar</source>
       <outputDirectory>.mvn/wrapper</outputDirectory>
       <destName>maven-wrapper.jar</destName> <!-- TODO include version -->
     </file>
diff --git a/src/assembly/source.xml b/src/assembly/script.xml
similarity index 88%
copy from src/assembly/source.xml
copy to src/assembly/script.xml
index dbc6b72..0101258 100644
--- a/src/assembly/source.xml
+++ b/src/assembly/script.xml
@@ -22,18 +22,23 @@ under the License.
 <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
-  <id>source</id>
+  <id>script</id>
   <formats>
     <format>tar.gz</format>
+    <format>zip</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>src/assembly/shared</directory>
       <outputDirectory>.</outputDirectory>
+      <filtered>true</filtered>
     </fileSet>
     <fileSet>
-      <directory>src/assembly/source</directory>
+      <directory>target</directory>
+      <includes>
+        <include></include>
+      </includes>
       <outputDirectory>.mvn/wrapper</outputDirectory>
     </fileSet>
   </fileSets>
diff --git a/src/assembly/shared/.mvn/wrapper/maven-wrapper.properties b/src/assembly/shared/.mvn/wrapper/maven-wrapper.properties
index aff1512..a2987ea 100644
--- a/src/assembly/shared/.mvn/wrapper/maven-wrapper.properties
+++ b/src/assembly/shared/.mvn/wrapper/maven-wrapper.properties
@@ -14,6 +14,5 @@
 # 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.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
-
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/${project.version}/apache-maven-${project.version}-bin.zip
+wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/maven-wrapper/${project.version}/maven-wrapper-${project.version}.jar
diff --git a/src/assembly/shared/mvnw b/src/assembly/shared/mvnw
index 41c0f0c..7cdb59c 100644
--- a/src/assembly/shared/mvnw
+++ b/src/assembly/shared/mvnw
@@ -212,9 +212,9 @@ 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"
+      jarUrl="$MVNW_REPOURL/org/apache/maven/maven-wrapper/${project.version}/maven-wrapper-${project.version}.jar"
     else
-      jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
+      jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/maven-wrapper/${project.version}/maven-wrapper-${project.version}.jar"
     fi
     while IFS="=" read key value; do
       case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
diff --git a/src/assembly/shared/mvnw.cmd b/src/assembly/shared/mvnw.cmd
index 8611571..3eb2ef4 100644
--- a/src/assembly/shared/mvnw.cmd
+++ b/src/assembly/shared/mvnw.cmd
@@ -120,7 +120,7 @@ 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 DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/maven-wrapper/${project.version}/maven-wrapper-${project.version}.jar"
 
 FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
     IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
@@ -134,7 +134,7 @@ 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 DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/maven-wrapper/${project.version}/maven-wrapper-${project.version}.jar"
     )
     if "%MVNW_VERBOSE%" == "true" (
         echo Couldn't find %WRAPPER_JAR%, downloading it ...
diff --git a/src/assembly/source.xml b/src/assembly/source.xml
index dbc6b72..f830853 100644
--- a/src/assembly/source.xml
+++ b/src/assembly/source.xml
@@ -25,12 +25,14 @@ under the License.
   <id>source</id>
   <formats>
     <format>tar.gz</format>
+    <format>zip</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
   <fileSets>
     <fileSet>
       <directory>src/assembly/shared</directory>
       <outputDirectory>.</outputDirectory>
+      <filtered>true</filtered>
     </fileSet>
     <fileSet>
       <directory>src/assembly/source</directory>
diff --git a/src/assembly/source/MavenWrapperDownloader.java b/src/assembly/source/MavenWrapperDownloader.java
index b901097..3b6cc0a 100644
--- a/src/assembly/source/MavenWrapperDownloader.java
+++ b/src/assembly/source/MavenWrapperDownloader.java
@@ -20,11 +20,12 @@ import java.util.Properties;
 
 public class MavenWrapperDownloader {
 
-    private static final String WRAPPER_VERSION = "0.5.6";
+    private static final String WRAPPER_VERSION = "${project.version}";
+
     /**
      * 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/"
+    private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/maven-wrapper/"
         + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
 
     /**
@@ -106,12 +107,11 @@ public class MavenWrapperDownloader {
             });
         }
         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();
+        try ( ReadableByteChannel rbc = Channels.newChannel( website.openStream() );
+                        FileOutputStream fos = new FileOutputStream(destination) )
+        {
+            fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
+        }
     }
 
 }
diff --git a/src/main/java/org/apache/maven/wrapper/Installer.java b/src/main/java/org/apache/maven/wrapper/Installer.java
index 1be51c4..a8d8dce 100644
--- a/src/main/java/org/apache/maven/wrapper/Installer.java
+++ b/src/main/java/org/apache/maven/wrapper/Installer.java
@@ -25,6 +25,7 @@ import java.io.IOException;
 import java.io.InputStreamReader;
 import java.net.URI;
 import java.nio.file.FileVisitResult;
+import java.nio.file.FileVisitor;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.SimpleFileVisitor;
@@ -80,7 +81,7 @@ public class Installer
         if ( alwaysDownload || !Files.exists( localZipFile ) )
         {
             Path tmpZipFile = localZipFile.resolveSibling( localZipFile.getFileName() + ".part" );
-            Files.delete( tmpZipFile );
+            Files.deleteIfExists( tmpZipFile );
             Logger.info( "Downloading " + distributionUrl );
             download.download( distributionUrl, tmpZipFile );
             Files.move( tmpZipFile, localZipFile );
@@ -92,8 +93,30 @@ public class Installer
 
         if ( downloaded || alwaysUnpack || dirs.isEmpty() )
         {
-            Logger.info( "Deleting directory " + distDir.toAbsolutePath() );
-            deleteDir( distDir );
+            Files.walkFileTree( distDir.toAbsolutePath(), new SimpleFileVisitor<Path>()
+            {
+                @Override
+                public FileVisitResult postVisitDirectory( Path dir, IOException exc )
+                    throws IOException
+                {
+                    if ( dir.getParent().equals( distDir ) )
+                    {
+                        Logger.info( "Deleting directory " + distDir.toAbsolutePath() );
+                        Files.delete( dir );
+                    }
+                    return FileVisitResult.CONTINUE;
+                }
+                
+                public FileVisitResult visitFile( Path file, BasicFileAttributes attrs )
+                    throws IOException
+                {
+                    if ( !file.getParent().equals( distDir ) )
+                    {
+                        Files.delete( file );
+                    }
+                    return FileVisitResult.CONTINUE;
+                };
+            } );
             
             Logger.info( "Unzipping " + localZipFile.toAbsolutePath() + " to " + distDir.toAbsolutePath() );
             unzip( localZipFile, distDir );
diff --git a/src/main/java/org/apache/maven/wrapper/MavenWrapperMain.java b/src/main/java/org/apache/maven/wrapper/MavenWrapperMain.java
index 772e2e6..ad7777c 100644
--- a/src/main/java/org/apache/maven/wrapper/MavenWrapperMain.java
+++ b/src/main/java/org/apache/maven/wrapper/MavenWrapperMain.java
@@ -35,7 +35,7 @@ import org.apache.maven.wrapper.cli.SystemPropertiesCommandLineConverter;
  * @author Hans Dockter
  */
 public class MavenWrapperMain
-{
+{                                                  
     private static final String POM_PROPERTIES = "/META-INF/maven/org.apache.maven/maven-wrapper/pom.properties";
 
     public static final String DEFAULT_MAVEN_USER_HOME = System.getProperty( "user.home" ) + "/.m2";
@@ -52,10 +52,8 @@ public class MavenWrapperMain
 
     public static final String MVNW_REPOURL = "MVNW_REPOURL";
 
-    public static final String MVN_VERSION = "3.6.3";
-
-    public static final String MVN_PATH =
-        "org/apache/maven/apache-maven/" + MVN_VERSION + "/apache-maven-" + MVN_VERSION + "-bin.zip";
+    public static final String MVN_PATH =  
+        "org/apache/maven/apache-maven/" + wrapperVersion() + "/apache-maven-" + wrapperVersion() + "-bin.zip";
 
     public static void main( String[] args )
         throws Exception
@@ -65,7 +63,6 @@ public class MavenWrapperMain
         Path rootDir = rootDir( wrapperJar );
 
         String wrapperVersion = wrapperVersion();
-        Logger.info( "Apache Maven Wrapper " + wrapperVersion );
 
         try 
         {
@@ -136,7 +133,8 @@ public class MavenWrapperMain
             
             if ( resourceAsStream == null )
             {
-                throw new RuntimeException( "No maven properties found." );
+                return "3.7.0-SNAPSHOT";
+//                throw new RuntimeException( "No maven properties found." );
             }
                 Properties mavenProperties = new Properties();
                 mavenProperties.load( resourceAsStream );