You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2021/10/10 07:39:15 UTC

[maven-studies] branch maven-wrapper created (now 801ef03)

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

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


      at 801ef03  Remove md5hash in path, it's considered fake security

This branch includes the following new commits:

     new bd8a47e  let curl following redirect
     new 480924f  Remove cli, it is not being used
     new 6939d49  Merge branch 'maven-wrapper' of https://gitbox.apache.org/repos/asf/maven-studies into maven-wrapper
     new 801ef03  Remove md5hash in path, it's considered fake security

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[maven-studies] 04/04: Remove md5hash in path, it's considered fake security

Posted by hb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 801ef03263e305326b8758af1f96d646d55143da
Author: rfscholte <rf...@apache.org>
AuthorDate: Thu Apr 16 23:24:46 2020 +0200

    Remove md5hash in path, it's considered fake security
---
 .../java/org/apache/maven/wrapper/Installer.java   |  22 ---
 .../org/apache/maven/wrapper/PathAssembler.java    |  30 +---
 .../apache/maven/wrapper/PathAssemblerTest.java    | 167 ++++++++++-----------
 3 files changed, 82 insertions(+), 137 deletions(-)

diff --git a/src/main/java/org/apache/maven/wrapper/Installer.java b/src/main/java/org/apache/maven/wrapper/Installer.java
index b4fae27..9b4943d 100644
--- a/src/main/java/org/apache/maven/wrapper/Installer.java
+++ b/src/main/java/org/apache/maven/wrapper/Installer.java
@@ -205,28 +205,6 @@ public class Installer
         return false;
     }
 
-    private Path deleteDir( Path dir ) throws IOException
-    {
-        return Files.walkFileTree( dir, new SimpleFileVisitor<Path>()
-        {
-            @Override
-            public FileVisitResult postVisitDirectory( Path dir, IOException exc )
-                throws IOException
-            {
-                Files.delete( dir );
-                return FileVisitResult.CONTINUE;
-            }
-
-            @Override
-            public FileVisitResult visitFile( Path file, BasicFileAttributes attrs )
-                throws IOException
-            {
-                Files.delete( file );
-                return FileVisitResult.CONTINUE;
-            }
-        } );
-    }
-
     private void unzip( Path zip, Path dest )
         throws IOException
     {
diff --git a/src/main/java/org/apache/maven/wrapper/PathAssembler.java b/src/main/java/org/apache/maven/wrapper/PathAssembler.java
index 8d544d9..4cabc5b 100644
--- a/src/main/java/org/apache/maven/wrapper/PathAssembler.java
+++ b/src/main/java/org/apache/maven/wrapper/PathAssembler.java
@@ -19,11 +19,9 @@ package org.apache.maven.wrapper;
  * under the License.
  */
 
-import java.math.BigInteger;
 import java.net.URI;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.security.MessageDigest;
 
 /**
  * @author Hans Dockter
@@ -51,8 +49,7 @@ public class PathAssembler
     public LocalDistribution getDistribution( WrapperConfiguration configuration )
     {
         String baseName = getDistName( configuration.getDistribution() );
-        String distName = removeExtension( baseName );
-        String rootDirName = rootDirName( distName, configuration );
+        String rootDirName = removeExtension( baseName );
         Path distDir = getBaseDir( configuration.getDistributionBase() )
                         .resolve( configuration.getDistributionPath() )
                         .resolve( rootDirName );
@@ -63,27 +60,6 @@ public class PathAssembler
         return new LocalDistribution( distDir, distZip );
     }
 
-    private String rootDirName( String distName, WrapperConfiguration configuration )
-    {
-        String urlHash = getMd5Hash( configuration.getDistribution().toString() );
-        return String.format( "%s/%s", distName, urlHash );
-    }
-
-    private String getMd5Hash( String string )
-    {
-        try
-        {
-            MessageDigest messageDigest = MessageDigest.getInstance( "MD5" );
-            byte[] bytes = string.getBytes();
-            messageDigest.update( bytes );
-            return new BigInteger( 1, messageDigest.digest() ).toString( 32 );
-        }
-        catch ( Exception e )
-        {
-            throw new RuntimeException( "Could not hash input string.", e );
-        }
-    }
-
     private String removeExtension( String name )
     {
         int p = name.lastIndexOf( "." );
@@ -107,11 +83,11 @@ public class PathAssembler
 
     private Path getBaseDir( String base )
     {
-        if ( base.equals( MAVEN_USER_HOME_STRING ) )
+        if ( MAVEN_USER_HOME_STRING.equals( base ) )
         {
             return mavenUserHome;
         }
-        else if ( base.equals( PROJECT_STRING ) )
+        else if ( PROJECT_STRING.equals( base ) )
         {
             return Paths.get( System.getProperty( "user.dir" ) );
         }
diff --git a/src/test/java/org/apache/maven/wrapper/PathAssemblerTest.java b/src/test/java/org/apache/maven/wrapper/PathAssemblerTest.java
index 9bd3916..0bf5df3 100644
--- a/src/test/java/org/apache/maven/wrapper/PathAssemblerTest.java
+++ b/src/test/java/org/apache/maven/wrapper/PathAssemblerTest.java
@@ -15,106 +15,97 @@
  */
 package org.apache.maven.wrapper;
 
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.is;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.fail;
+import static org.junit.Assert.assertThrows;
 
 import java.net.URI;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.regex.Pattern;
 
-import org.hamcrest.BaseMatcher;
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
 import org.junit.Before;
 import org.junit.Test;
 
 /**
  * @author Hans Dockter
  */
-public class PathAssemblerTest {
-  public static final String TEST_MAVEN_USER_HOME = "someUserHome";
-
-  private PathAssembler pathAssembler = new PathAssembler( Paths.get( TEST_MAVEN_USER_HOME ) );
-
-  final WrapperConfiguration configuration = new WrapperConfiguration();
-
-  @Before
-  public void setup() {
-    configuration.setDistributionBase(PathAssembler.MAVEN_USER_HOME_STRING);
-    configuration.setDistributionPath("somePath");
-    configuration.setZipBase(PathAssembler.MAVEN_USER_HOME_STRING);
-    configuration.setZipPath("somePath");
-  }
-
-  @Test
-  public void distributionDirWithMavenUserHomeBase() throws Exception {
-    configuration.setDistribution(new URI("http://server/dist/maven-0.9-bin.zip"));
-
-    Path distributionDir = pathAssembler.getDistribution(configuration).getDistributionDir();
-    assertThat(distributionDir.getFileName().toString(), matchesRegexp("[a-z0-9]+"));
-    assertThat(distributionDir.getParent(), equalTo(Paths.get(TEST_MAVEN_USER_HOME, "/somePath/maven-0.9-bin")));
-  }
-
-  @Test
-  public void distributionDirWithProjectBase() throws Exception {
-    configuration.setDistributionBase(PathAssembler.PROJECT_STRING);
-    configuration.setDistribution(new URI("http://server/dist/maven-0.9-bin.zip"));
-
-    Path distributionDir = pathAssembler.getDistribution(configuration).getDistributionDir();
-    assertThat(distributionDir.getFileName().toString(), matchesRegexp("[a-z0-9]+"));
-    assertThat(distributionDir.getParent(), equalTo(Paths.get(currentDirPath(), "/somePath/maven-0.9-bin")));
-  }
-
-  @Test
-  public void distributionDirWithUnknownBase() throws Exception {
-    configuration.setDistribution(new URI("http://server/dist/maven-1.0.zip"));
-    configuration.setDistributionBase("unknownBase");
-
-    try {
-      pathAssembler.getDistribution(configuration);
-      fail();
-    } catch (RuntimeException e) {
-      assertEquals("Base: unknownBase is unknown", e.getMessage());
+public class PathAssemblerTest
+{
+    public static final String TEST_MAVEN_USER_HOME = "someUserHome";
+
+    private PathAssembler pathAssembler = new PathAssembler( Paths.get( TEST_MAVEN_USER_HOME ) );
+
+    final WrapperConfiguration configuration = new WrapperConfiguration();
+
+    @Before
+    public void setup()
+    {
+        configuration.setDistributionBase( PathAssembler.MAVEN_USER_HOME_STRING );
+        configuration.setDistributionPath( "somePath" );
+        configuration.setZipBase( PathAssembler.MAVEN_USER_HOME_STRING );
+        configuration.setZipPath( "somePath" );
+    }
+
+    @Test
+    public void distributionDirWithMavenUserHomeBase()
+        throws Exception
+    {
+        configuration.setDistribution( new URI( "http://server/dist/maven-0.9-bin.zip" ) );
+
+        Path distributionDir = pathAssembler.getDistribution( configuration ).getDistributionDir();
+        assertThat( distributionDir, is( Paths.get( TEST_MAVEN_USER_HOME, "/somePath/maven-0.9-bin" ) ) );
+    }
+
+    @Test
+    public void distributionDirWithProjectBase()
+        throws Exception
+    {
+        configuration.setDistributionBase( PathAssembler.PROJECT_STRING );
+        configuration.setDistribution( new URI( "http://server/dist/maven-0.9-bin.zip" ) );
+
+        Path distributionDir = pathAssembler.getDistribution( configuration ).getDistributionDir();
+        assertThat( distributionDir, equalTo( Paths.get( currentDirPath(), "/somePath/maven-0.9-bin" ) ) );
+    }
+
+    @Test
+    public void distributionDirWithUnknownBase()
+        throws Exception
+    {
+        configuration.setDistribution( new URI( "http://server/dist/maven-1.0.zip" ) );
+        configuration.setDistributionBase( "unknownBase" );
+
+        RuntimeException e =
+            assertThrows( RuntimeException.class, () -> pathAssembler.getDistribution( configuration ) );
+        assertEquals( "Base: unknownBase is unknown", e.getMessage() );
+    }
+
+    @Test
+    public void distZipWithMavenUserHomeBase()
+        throws Exception
+    {
+        configuration.setDistribution( new URI( "http://server/dist/maven-1.0.zip" ) );
+
+        Path dist = pathAssembler.getDistribution( configuration ).getZipFile();
+        assertThat( dist.getFileName().toString(), equalTo( "maven-1.0.zip" ) );
+        assertThat( dist.getParent(), equalTo( Paths.get( TEST_MAVEN_USER_HOME, "/somePath/maven-1.0" ) ) );
+    }
+
+    @Test
+    public void distZipWithProjectBase()
+        throws Exception
+    {
+        configuration.setZipBase( PathAssembler.PROJECT_STRING );
+        configuration.setDistribution( new URI( "http://server/dist/maven-1.0.zip" ) );
+
+        Path dist = pathAssembler.getDistribution( configuration ).getZipFile();
+        assertThat( dist.getFileName().toString(), equalTo( "maven-1.0.zip" ) );
+        assertThat( dist.getParent(), equalTo( Paths.get( currentDirPath(), "/somePath/maven-1.0" ) ) );
+    }
+
+    private String currentDirPath()
+    {
+        return System.getProperty( "user.dir" );
     }
-  }
-
-  @Test
-  public void distZipWithMavenUserHomeBase() throws Exception {
-    configuration.setDistribution(new URI("http://server/dist/maven-1.0.zip"));
-
-    Path dist = pathAssembler.getDistribution(configuration).getZipFile();
-    assertThat(dist.getFileName().toString(), equalTo("maven-1.0.zip"));
-    assertThat(dist.getParent().getFileName().toString(), matchesRegexp("[a-z0-9]+"));
-    assertThat(dist.getParent().getParent(), equalTo(Paths.get(TEST_MAVEN_USER_HOME, "/somePath/maven-1.0")));
-  }
-
-  @Test
-  public void distZipWithProjectBase() throws Exception {
-    configuration.setZipBase(PathAssembler.PROJECT_STRING);
-    configuration.setDistribution(new URI("http://server/dist/maven-1.0.zip"));
-
-    Path dist = pathAssembler.getDistribution(configuration).getZipFile();
-    assertThat(dist.getFileName().toString(), equalTo("maven-1.0.zip"));
-    assertThat(dist.getParent().getFileName().toString(), matchesRegexp("[a-z0-9]+"));
-    assertThat(dist.getParent().getParent(), equalTo(Paths.get(currentDirPath(), "/somePath/maven-1.0")));
-  }
-
-  private String currentDirPath() {
-    return System.getProperty("user.dir");
-  }
-
-  public static <T extends CharSequence> Matcher<T> matchesRegexp(final String pattern) {
-    return new BaseMatcher<T>() {
-      public boolean matches(Object o) {
-        return Pattern.compile(pattern).matcher((CharSequence) o).matches();
-      }
-
-      public void describeTo(Description description) {
-        description.appendText("a CharSequence that matches regexp ").appendValue(pattern);
-      }
-    };
-  }
 }

[maven-studies] 02/04: Remove cli, it is not being used

Posted by hb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 480924f690c6ded5f6d525257799f8590078f4a0
Author: rfscholte <rf...@apache.org>
AuthorDate: Thu Apr 16 22:56:30 2020 +0200

    Remove cli, it is not being used
---
 .../org/apache/maven/wrapper/MavenWrapperMain.java |  48 +-
 .../wrapper/cli/AbstractCommandLineConverter.java  |  53 --
 .../AbstractPropertiesCommandLineConverter.java    |  66 --
 .../wrapper/cli/CommandLineArgumentException.java  |  39 --
 .../maven/wrapper/cli/CommandLineConverter.java    |  41 --
 .../maven/wrapper/cli/CommandLineOption.java       | 140 -----
 .../maven/wrapper/cli/CommandLineParser.java       | 676 ---------------------
 .../maven/wrapper/cli/ParsedCommandLine.java       | 140 -----
 .../maven/wrapper/cli/ParsedCommandLineOption.java |  59 --
 .../cli/ProjectPropertiesCommandLineConverter.java |  46 --
 .../cli/SystemPropertiesCommandLineConverter.java  |  46 --
 11 files changed, 17 insertions(+), 1337 deletions(-)

diff --git a/src/main/java/org/apache/maven/wrapper/MavenWrapperMain.java b/src/main/java/org/apache/maven/wrapper/MavenWrapperMain.java
index ad7777c..fd5dd82 100644
--- a/src/main/java/org/apache/maven/wrapper/MavenWrapperMain.java
+++ b/src/main/java/org/apache/maven/wrapper/MavenWrapperMain.java
@@ -25,12 +25,8 @@ import java.net.URISyntaxException;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.security.AccessControlException;
-import java.util.Map;
 import java.util.Properties;
 
-import org.apache.maven.wrapper.cli.CommandLineParser;
-import org.apache.maven.wrapper.cli.SystemPropertiesCommandLineConverter;
-
 /**
  * @author Hans Dockter
  */
@@ -66,8 +62,6 @@ public class MavenWrapperMain
 
         try 
         {
-            Properties systemProperties = System.getProperties();
-            systemProperties.putAll( parseSystemPropertiesFromArgs( args ) );
             addSystemProperties( rootDir );
         }
         catch ( AccessControlException e )
@@ -81,21 +75,13 @@ public class MavenWrapperMain
                                  new BootstrapMainStarter() );
     }
 
-    private static Map<String, String> parseSystemPropertiesFromArgs( String[] args )
-    {
-        SystemPropertiesCommandLineConverter converter = new SystemPropertiesCommandLineConverter();
-        CommandLineParser commandLineParser = new CommandLineParser();
-        converter.configure( commandLineParser );
-        commandLineParser.allowUnknownOptions();
-        return converter.convert( commandLineParser.parse( args ) );
-    }
-
     private static void addSystemProperties( Path rootDir )
     {
-        System.getProperties().putAll( 
-                       SystemPropertiesHandler.getSystemProperties( mavenUserHome().resolve( "maven.properties" ) ) );
-        System.getProperties().putAll( 
-                       SystemPropertiesHandler.getSystemProperties( rootDir.resolve( "maven.properties" ) ) );
+        SystemPropertiesHandler.getSystemProperties( mavenUserHome().resolve( "maven.properties" ) ).entrySet().stream()
+            .forEach( e -> System.setProperty( e.getKey(), e.getValue() ) );
+
+        SystemPropertiesHandler.getSystemProperties( rootDir.resolve( "maven.properties" ) ).entrySet().stream()
+            .forEach( e -> System.setProperty( e.getKey(), e.getValue() ) );
     }
 
     private static Path rootDir( Path wrapperJar )
@@ -131,20 +117,20 @@ public class MavenWrapperMain
                MavenWrapperMain.class.getResourceAsStream( POM_PROPERTIES ) )
             {
             
-            if ( resourceAsStream == null )
-            {
-                return "3.7.0-SNAPSHOT";
-//                throw new RuntimeException( "No maven properties found." );
-            }
-                Properties mavenProperties = new Properties();
-                mavenProperties.load( resourceAsStream );
-                String version = mavenProperties.getProperty( "version" );
-                if ( version == null )
+                if ( resourceAsStream == null )
                 {
-                    throw new RuntimeException( "No version number specified in build receipt resource." );
+                    return "3.7.0-SNAPSHOT";
+    //                throw new RuntimeException( "No maven properties found." );
+                }
+                    Properties mavenProperties = new Properties();
+                    mavenProperties.load( resourceAsStream );
+                    String version = mavenProperties.getProperty( "version" );
+                    if ( version == null )
+                    {
+                        throw new RuntimeException( "No version number specified in build receipt resource." );
+                    }
+                    return version;
                 }
-                return version;
-            }
         }
         catch ( Exception e )
         {
diff --git a/src/main/java/org/apache/maven/wrapper/cli/AbstractCommandLineConverter.java b/src/main/java/org/apache/maven/wrapper/cli/AbstractCommandLineConverter.java
deleted file mode 100644
index f33c017..0000000
--- a/src/main/java/org/apache/maven/wrapper/cli/AbstractCommandLineConverter.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package org.apache.maven.wrapper.cli;
-
-/*
- * 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
- *
- *   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.
- */
-
-/**
- * The Abstract CommandLine Converter
- *
- * @param <T>
- */
-public abstract class AbstractCommandLineConverter<T>
-    implements CommandLineConverter<T>
-{
-    public T convert( Iterable<String> args )
-        throws CommandLineArgumentException
-    {
-        CommandLineParser parser = new CommandLineParser();
-        configure( parser );
-        return convert( parser.parse( args ) );
-    }
-
-    public T convert( ParsedCommandLine args )
-        throws CommandLineArgumentException
-    {
-        return convert( args, newInstance() );
-    }
-
-    public T convert( Iterable<String> args, T target )
-        throws CommandLineArgumentException
-    {
-        CommandLineParser parser = new CommandLineParser();
-        configure( parser );
-        return convert( parser.parse( args ), target );
-    }
-
-    protected abstract T newInstance();
-}
diff --git a/src/main/java/org/apache/maven/wrapper/cli/AbstractPropertiesCommandLineConverter.java b/src/main/java/org/apache/maven/wrapper/cli/AbstractPropertiesCommandLineConverter.java
deleted file mode 100644
index 455fd27..0000000
--- a/src/main/java/org/apache/maven/wrapper/cli/AbstractPropertiesCommandLineConverter.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.apache.maven.wrapper.cli;
-
-/*
- * 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
- *
- *   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.util.HashMap;
-import java.util.Map;
-
-/**
- * The Abstract Properties CommandLine Converter
- */
-public abstract class AbstractPropertiesCommandLineConverter
-    extends AbstractCommandLineConverter<Map<String, String>>
-{
-    protected abstract String getPropertyOption();
-
-    protected abstract String getPropertyOptionDetailed();
-
-    protected abstract String getPropertyOptionDescription();
-
-    public void configure( CommandLineParser parser )
-    {
-        CommandLineOption option = parser.option( getPropertyOption(), getPropertyOptionDetailed() );
-        option = option.hasArguments();
-        option.hasDescription( getPropertyOptionDescription() );
-    }
-
-    protected Map<String, String> newInstance()
-    {
-        return new HashMap<String, String>();
-    }
-
-    public Map<String, String> convert( ParsedCommandLine options, Map<String, String> properties )
-        throws CommandLineArgumentException
-    {
-        for ( String keyValueExpression : options.option( getPropertyOption() ).getValues() )
-        {
-            int pos = keyValueExpression.indexOf( "=" );
-            if ( pos < 0 )
-            {
-                properties.put( keyValueExpression, "" );
-            }
-            else
-            {
-                properties.put( keyValueExpression.substring( 0, pos ), keyValueExpression.substring( pos + 1 ) );
-            }
-        }
-        return properties;
-    }
-}
diff --git a/src/main/java/org/apache/maven/wrapper/cli/CommandLineArgumentException.java b/src/main/java/org/apache/maven/wrapper/cli/CommandLineArgumentException.java
deleted file mode 100644
index 3363349..0000000
--- a/src/main/java/org/apache/maven/wrapper/cli/CommandLineArgumentException.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.apache.maven.wrapper.cli;
-
-/*
- * 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
- *
- *   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.
- */
-
-/**
- * A {@code CommandLineArgumentException} is thrown when command-line arguments cannot be parsed.
- * 
- * @author Hans Dockter
- */
-public class CommandLineArgumentException
-    extends RuntimeException
-{
-    public CommandLineArgumentException( String message )
-    {
-        super( message );
-    }
-
-    public CommandLineArgumentException( String message, Throwable cause )
-    {
-        super( message, cause );
-    }
-}
diff --git a/src/main/java/org/apache/maven/wrapper/cli/CommandLineConverter.java b/src/main/java/org/apache/maven/wrapper/cli/CommandLineConverter.java
deleted file mode 100644
index fe7fbdf..0000000
--- a/src/main/java/org/apache/maven/wrapper/cli/CommandLineConverter.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.apache.maven.wrapper.cli;
-
-/*
- * 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
- *
- *   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.
- */
-
-/**
- * @author Hans Dockter
- * @param <T>
- */
-public interface CommandLineConverter<T>
-{
-    T convert( Iterable<String> args )
-        throws CommandLineArgumentException;
-
-    T convert( Iterable<String> args, T target )
-        throws CommandLineArgumentException;
-
-    T convert( ParsedCommandLine args )
-        throws CommandLineArgumentException;
-
-    T convert( ParsedCommandLine args, T target )
-        throws CommandLineArgumentException;
-
-    void configure( CommandLineParser parser );
-}
diff --git a/src/main/java/org/apache/maven/wrapper/cli/CommandLineOption.java b/src/main/java/org/apache/maven/wrapper/cli/CommandLineOption.java
deleted file mode 100644
index 0a6dc21..0000000
--- a/src/main/java/org/apache/maven/wrapper/cli/CommandLineOption.java
+++ /dev/null
@@ -1,140 +0,0 @@
-package org.apache.maven.wrapper.cli;
-
-/*
- * 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
- *
- *   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.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-/**
- * The CommandLine Option
- * 
- */
-public class CommandLineOption
-{
-    private final Set<String> options = new HashSet<String>();
-
-    private Class<?> argumentType = Void.TYPE;
-
-    private String description;
-
-    private String subcommand;
-
-    private String deprecationWarning;
-
-    private boolean incubating;
-
-    public CommandLineOption( Iterable<String> options )
-    {
-        for ( String option : options )
-        {
-            this.options.add( option );
-        }
-    }
-
-    public Set<String> getOptions()
-    {
-        return options;
-    }
-
-    public CommandLineOption hasArgument()
-    {
-        argumentType = String.class;
-        return this;
-    }
-
-    public CommandLineOption hasArguments()
-    {
-        argumentType = List.class;
-        return this;
-    }
-
-    public String getSubcommand()
-    {
-        return subcommand;
-    }
-
-    public CommandLineOption mapsToSubcommand( String command )
-    {
-        this.subcommand = command;
-        return this;
-    }
-
-    public String getDescription()
-    {
-        StringBuilder result = new StringBuilder();
-        if ( description != null )
-        {
-            result.append( description );
-        }
-        if ( deprecationWarning != null )
-        {
-            if ( result.length() > 0 )
-            {
-                result.append( ' ' );
-            }
-            result.append( "[deprecated - " );
-            result.append( deprecationWarning );
-            result.append( "]" );
-        }
-        if ( incubating )
-        {
-            if ( result.length() > 0 )
-            {
-                result.append( ' ' );
-            }
-            result.append( "[incubating]" );
-        }
-        return result.toString();
-    }
-
-    public CommandLineOption hasDescription( String description )
-    {
-        this.description = description;
-        return this;
-    }
-
-    public boolean getAllowsArguments()
-    {
-        return argumentType != Void.TYPE;
-    }
-
-    public boolean getAllowsMultipleArguments()
-    {
-        return argumentType == List.class;
-    }
-
-    public CommandLineOption deprecated( String deprecationWarning )
-    {
-        this.deprecationWarning = deprecationWarning;
-        return this;
-    }
-
-    public CommandLineOption incubating()
-    {
-        incubating = true;
-        return this;
-    }
-
-    public String getDeprecationWarning()
-    {
-        return deprecationWarning;
-    }
-}
diff --git a/src/main/java/org/apache/maven/wrapper/cli/CommandLineParser.java b/src/main/java/org/apache/maven/wrapper/cli/CommandLineParser.java
deleted file mode 100644
index 65ebc75..0000000
--- a/src/main/java/org/apache/maven/wrapper/cli/CommandLineParser.java
+++ /dev/null
@@ -1,676 +0,0 @@
-package org.apache.maven.wrapper.cli;
-
-/*
- * 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
- *
- *   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.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Formatter;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
-
-//CHECKSTYLE_OFF: LineLength
-/**
- * <p>
- * A command-line parser which supports a command/sub-command style command-line interface. Supports the following
- * syntax:
- * </p>
- * 
- * <pre>
- * &lt;option>* (&lt;sub-command> &lt;sub-command-option>*)*
- * </pre>
- * <ul>
- * <li>Short options are a '-' followed by a single character. For example: {@code -a}.</li>
- * <li>Long options are '--' followed by multiple characters. For example: {@code --long-option}.</li>
- * <li>Options can take arguments. The argument follows the option. For example: {@code -a arg} or {@code --long arg}.</li>
- * <li>Arguments can be attached to the option using '='. For example: {@code -a=arg} or {@code --long=arg}.</li>
- * <li>Arguments can be attached to short options. For example: {@code -aarg}.</li>
- * <li>Short options can be combined. For example {@code -ab} is equivalent to {@code -a -b}.</li>
- * <li>Anything else is treated as an extra argument. This includes a single {@code -} character.</li>
- * <li>'--' indicates the end of the options. Anything following is not parsed and is treated as extra arguments.</li>
- * <li>The parser is forgiving, and allows '--' to be used with short options and '-' to be used with long options.</li>
- * <li>The set of options must be known at parse time. Sub-commands and their options do not need to be known at parse
- * time. Use {@link ParsedCommandLine#getExtraArguments()} to obtain the non-option command-line arguments.</li>
- * </ul>
- */
-//CHECKSTYLE_ON: LineLength
-public class CommandLineParser
-{
-    private Map<String, CommandLineOption> optionsByString = new HashMap<String, CommandLineOption>();
-
-    private boolean allowMixedOptions;
-
-    private boolean allowUnknownOptions;
-
-    private final PrintWriter deprecationPrinter;
-
-    public CommandLineParser()
-    {
-        this( new OutputStreamWriter( System.out ) );
-    }
-
-    public CommandLineParser( Writer deprecationPrinter )
-    {
-        this.deprecationPrinter = new PrintWriter( deprecationPrinter );
-    }
-
-    /**
-     * Parses the given command-line.
-     * 
-     * @param commandLine The command-line.
-     * @return The parsed command line.
-     * @throws org.apache.maven.wrapper.cli.CommandLineArgumentException On parse failure.
-     */
-    public ParsedCommandLine parse( String... commandLine )
-        throws CommandLineArgumentException
-    {
-        return parse( Arrays.asList( commandLine ) );
-    }
-
-    /**
-     * Parses the given command-line.
-     * 
-     * @param commandLine The command-line.
-     * @return The parsed command line.
-     * @throws org.apache.maven.wrapper.cli.CommandLineArgumentException On parse failure.
-     */
-    public ParsedCommandLine parse( Iterable<String> commandLine )
-        throws CommandLineArgumentException
-    {
-        ParsedCommandLine parsedCommandLine =
-            new ParsedCommandLine( new HashSet<CommandLineOption>( optionsByString.values() ) );
-        ParserState parseState = new BeforeFirstSubCommand( parsedCommandLine );
-        for ( String arg : commandLine )
-        {
-            if ( parseState.maybeStartOption( arg ) )
-            {
-                if ( arg.equals( "--" ) )
-                {
-                    parseState = new AfterOptions( parsedCommandLine );
-                }
-                else if ( arg.matches( "--[^=]+" ) )
-                {
-                    OptionParserState parsedOption = parseState.onStartOption( arg, arg.substring( 2 ) );
-                    parseState = parsedOption.onStartNextArg();
-                }
-                else if ( arg.matches( "--[^=]+=.*" ) )
-                {
-                    int endArg = arg.indexOf( '=' );
-                    OptionParserState parsedOption = parseState.onStartOption( arg, arg.substring( 2, endArg ) );
-                    parseState = parsedOption.onArgument( arg.substring( endArg + 1 ) );
-                }
-                else if ( arg.matches( "-[^=]=.*" ) )
-                {
-                    OptionParserState parsedOption = parseState.onStartOption( arg, arg.substring( 1, 2 ) );
-                    parseState = parsedOption.onArgument( arg.substring( 3 ) );
-                }
-                else
-                {
-                    assert arg.matches( "-[^-].*" );
-                    String option = arg.substring( 1 );
-                    if ( optionsByString.containsKey( option ) )
-                    {
-                        OptionParserState parsedOption = parseState.onStartOption( arg, option );
-                        parseState = parsedOption.onStartNextArg();
-                    }
-                    else
-                    {
-                        String option1 = arg.substring( 1, 2 );
-                        OptionParserState parsedOption;
-                        if ( optionsByString.containsKey( option1 ) )
-                        {
-                            parsedOption = parseState.onStartOption( "-" + option1, option1 );
-                            if ( parsedOption.getHasArgument() )
-                            {
-                                parseState = parsedOption.onArgument( arg.substring( 2 ) );
-                            }
-                            else
-                            {
-                                parseState = parsedOption.onComplete();
-                                for ( int i = 2; i < arg.length(); i++ )
-                                {
-                                    String optionStr = arg.substring( i, i + 1 );
-                                    parsedOption = parseState.onStartOption( "-" + optionStr, optionStr );
-                                    parseState = parsedOption.onComplete();
-                                }
-                            }
-                        }
-                        else
-                        {
-                            if ( allowUnknownOptions )
-                            {
-                                // if we are allowing unknowns, just pass through the whole arg
-                                parsedOption = parseState.onStartOption( arg, option );
-                                parseState = parsedOption.onComplete();
-                            }
-                            else
-                            {
-                                // We are going to throw a CommandLineArgumentException below, but want the message
-                                // to reflect that we didn't recognise the first char (i.e. the option specifier)
-                                parsedOption = parseState.onStartOption( "-" + option1, option1 );
-                                parseState = parsedOption.onComplete();
-                            }
-                        }
-                    }
-                }
-            }
-            else
-            {
-                parseState = parseState.onNonOption( arg );
-            }
-        }
-
-        parseState.onCommandLineEnd();
-        return parsedCommandLine;
-    }
-
-    public CommandLineParser allowMixedSubcommandsAndOptions()
-    {
-        allowMixedOptions = true;
-        return this;
-    }
-
-    public CommandLineParser allowUnknownOptions()
-    {
-        allowUnknownOptions = true;
-        return this;
-    }
-
-    /**
-     * Prints a usage message to the given stream.
-     * 
-     * @param out The output stream to write to.
-     */
-    public void printUsage( Appendable out )
-    {
-        Formatter formatter = new Formatter( out );
-        Set<CommandLineOption> orderedOptions = new TreeSet<CommandLineOption>( new OptionComparator() );
-        orderedOptions.addAll( optionsByString.values() );
-        Map<String, String> lines = new LinkedHashMap<String, String>();
-        for ( CommandLineOption option : orderedOptions )
-        {
-            Set<String> orderedOptionStrings = new TreeSet<String>( new OptionStringComparator() );
-            orderedOptionStrings.addAll( option.getOptions() );
-            List<String> prefixedStrings = new ArrayList<String>();
-            for ( String optionString : orderedOptionStrings )
-            {
-                if ( optionString.length() == 1 )
-                {
-                    prefixedStrings.add( "-" + optionString );
-                }
-                else
-                {
-                    prefixedStrings.add( "--" + optionString );
-                }
-            }
-
-            String key = join( prefixedStrings, ", " );
-            String value = option.getDescription();
-            if ( value == null || value.length() == 0 )
-            {
-                value = "";
-            }
-
-            lines.put( key, value );
-        }
-        int max = 0;
-        for ( String optionStr : lines.keySet() )
-        {
-            max = Math.max( max, optionStr.length() );
-        }
-        for ( Map.Entry<String, String> entry : lines.entrySet() )
-        {
-            if ( entry.getValue().length() == 0 )
-            {
-                formatter.format( "%s%n", entry.getKey() );
-            }
-            else
-            {
-                formatter.format( "%-" + max + "s  %s%n", entry.getKey(), entry.getValue() );
-            }
-        }
-        formatter.flush();
-    }
-
-    private static String join( Collection<?> things, String separator )
-    {
-        StringBuffer buffer = new StringBuffer();
-        boolean first = true;
-
-        if ( separator == null )
-        {
-            separator = "";
-        }
-
-        for ( Object thing : things )
-        {
-            if ( !first )
-            {
-                buffer.append( separator );
-            }
-            buffer.append( thing.toString() );
-            first = false;
-        }
-        return buffer.toString();
-    }
-
-    /**
-     * Defines a new option. By default, the option takes no arguments and has no description.
-     * 
-     * @param options The options values.
-     * @return The option, which can be further configured.
-     */
-    public CommandLineOption option( String... options )
-    {
-        for ( String option : options )
-        {
-            if ( optionsByString.containsKey( option ) )
-            {
-                throw new IllegalArgumentException( String.format( "Option '%s' is already defined.", option ) );
-            }
-            if ( option.startsWith( "-" ) )
-            {
-                throw new IllegalArgumentException( 
-                           String.format( "Can't add option '%s' as an option cannot start with '-'.", option ) );
-            }
-        }
-        CommandLineOption option = new CommandLineOption( Arrays.asList( options ) );
-        for ( String optionStr : option.getOptions() )
-        {
-            this.optionsByString.put( optionStr, option );
-        }
-        return option;
-    }
-
-    private static class OptionString
-    {
-        private final String arg;
-
-        private final String option;
-
-        private OptionString( String arg, String option )
-        {
-            this.arg = arg;
-            this.option = option;
-        }
-
-        public String getDisplayName()
-        {
-            return arg.startsWith( "--" ) ? "--" + option : "-" + option;
-        }
-
-        @Override
-        public String toString()
-        {
-            return getDisplayName();
-        }
-    }
-
-    private abstract static class ParserState
-    {
-        public abstract boolean maybeStartOption( String arg );
-
-        boolean isOption( String arg )
-        {
-            return arg.matches( "-.+" );
-        }
-
-        public abstract OptionParserState onStartOption( String arg, String option );
-
-        public abstract ParserState onNonOption( String arg );
-
-        public void onCommandLineEnd()
-        {
-        }
-    }
-
-    private abstract class OptionAwareParserState
-        extends ParserState
-    {
-        protected final ParsedCommandLine commandLine;
-
-        protected OptionAwareParserState( ParsedCommandLine commandLine )
-        {
-            this.commandLine = commandLine;
-        }
-
-        @Override
-        public boolean maybeStartOption( String arg )
-        {
-            return isOption( arg );
-        }
-
-        @Override
-        public ParserState onNonOption( String arg )
-        {
-            commandLine.addExtraValue( arg );
-            return allowMixedOptions ? new AfterFirstSubCommand( commandLine ) : new AfterOptions( commandLine );
-        }
-    }
-
-    private class BeforeFirstSubCommand
-        extends OptionAwareParserState
-    {
-        private BeforeFirstSubCommand( ParsedCommandLine commandLine )
-        {
-            super( commandLine );
-        }
-
-        @Override
-        public OptionParserState onStartOption( String arg, String option )
-        {
-            OptionString optionString = new OptionString( arg, option );
-            CommandLineOption commandLineOption = optionsByString.get( option );
-            if ( commandLineOption == null )
-            {
-                if ( allowUnknownOptions )
-                {
-                    return new UnknownOptionParserState( arg, commandLine, this );
-                }
-                else
-                {
-                    throw new CommandLineArgumentException( String.format( "Unknown command-line option '%s'.",
-                                                                           optionString ) );
-                }
-            }
-            return new KnownOptionParserState( optionString, commandLineOption, commandLine, this );
-        }
-    }
-
-    private class AfterFirstSubCommand
-        extends OptionAwareParserState
-    {
-        private AfterFirstSubCommand( ParsedCommandLine commandLine )
-        {
-            super( commandLine );
-        }
-
-        @Override
-        public OptionParserState onStartOption( String arg, String option )
-        {
-            CommandLineOption commandLineOption = optionsByString.get( option );
-            if ( commandLineOption == null )
-            {
-                return new UnknownOptionParserState( arg, commandLine, this );
-            }
-            return new KnownOptionParserState( new OptionString( arg, option ), commandLineOption, commandLine, this );
-        }
-    }
-
-    private static class AfterOptions
-        extends ParserState
-    {
-        private final ParsedCommandLine commandLine;
-
-        private AfterOptions( ParsedCommandLine commandLine )
-        {
-            this.commandLine = commandLine;
-        }
-
-        @Override
-        public boolean maybeStartOption( String arg )
-        {
-            return false;
-        }
-
-        @Override
-        public OptionParserState onStartOption( String arg, String option )
-        {
-            return new UnknownOptionParserState( arg, commandLine, this );
-        }
-
-        @Override
-        public ParserState onNonOption( String arg )
-        {
-            commandLine.addExtraValue( arg );
-            return this;
-        }
-    }
-
-    private static class MissingOptionArgState
-        extends ParserState
-    {
-        private final OptionParserState option;
-
-        private MissingOptionArgState( OptionParserState option )
-        {
-            this.option = option;
-        }
-
-        @Override
-        public boolean maybeStartOption( String arg )
-        {
-            return isOption( arg );
-        }
-
-        @Override
-        public OptionParserState onStartOption( String arg, String option )
-        {
-            return this.option.onComplete().onStartOption( arg, option );
-        }
-
-        @Override
-        public ParserState onNonOption( String arg )
-        {
-            return option.onArgument( arg );
-        }
-
-        @Override
-        public void onCommandLineEnd()
-        {
-            option.onComplete();
-        }
-    }
-
-    private abstract static class OptionParserState
-    {
-        public abstract ParserState onStartNextArg();
-
-        public abstract ParserState onArgument( String argument );
-
-        public abstract boolean getHasArgument();
-
-        public abstract ParserState onComplete();
-    }
-
-    private class KnownOptionParserState
-        extends OptionParserState
-    {
-        private final OptionString optionString;
-
-        private final CommandLineOption option;
-
-        private final ParsedCommandLine commandLine;
-
-        private final ParserState state;
-
-        private final List<String> values = new ArrayList<String>();
-
-        private KnownOptionParserState( OptionString optionString, CommandLineOption option,
-                                        ParsedCommandLine commandLine, ParserState state )
-        {
-            this.optionString = optionString;
-            this.option = option;
-            this.commandLine = commandLine;
-            this.state = state;
-        }
-
-        @Override
-        public ParserState onArgument( String argument )
-        {
-            if ( !getHasArgument() )
-            {
-                throw new CommandLineArgumentException( 
-                        String.format( "Command-line option '%s' does not take an argument.", optionString ) );
-            }
-            if ( argument.length() == 0 )
-            {
-                throw new CommandLineArgumentException( 
-                        String.format( "An empty argument was provided for command-line option '%s'.", optionString ) );
-            }
-            values.add( argument );
-            return onComplete();
-        }
-
-        @Override
-        public ParserState onStartNextArg()
-        {
-            if ( option.getAllowsArguments() && values.isEmpty() )
-            {
-                return new MissingOptionArgState( this );
-            }
-            return onComplete();
-        }
-
-        @Override
-        public boolean getHasArgument()
-        {
-            return option.getAllowsArguments();
-        }
-
-        @Override
-        public ParserState onComplete()
-        {
-            if ( getHasArgument() && values.isEmpty() )
-            {
-                throw new CommandLineArgumentException( 
-                        String.format( "No argument was provided for command-line option '%s'.", optionString ) );
-            }
-
-            ParsedCommandLineOption parsedOption = commandLine.addOption( optionString.option, option );
-            if ( values.size() + parsedOption.getValues().size() > 1 && !option.getAllowsMultipleArguments() )
-            {
-                throw new CommandLineArgumentException( 
-                String.format( "Multiple arguments were provided for command-line option '%s'.", optionString ) );
-            }
-            for ( String value : values )
-            {
-                parsedOption.addArgument( value );
-            }
-            if ( option.getDeprecationWarning() != null )
-            {
-                deprecationPrinter.println( "The " + optionString + " option is deprecated - "
-                    + option.getDeprecationWarning() );
-            }
-            if ( option.getSubcommand() != null )
-            {
-                return state.onNonOption( option.getSubcommand() );
-            }
-
-            return state;
-        }
-    }
-
-    private static class UnknownOptionParserState
-        extends OptionParserState
-    {
-        private final ParserState state;
-
-        private final String arg;
-
-        private final ParsedCommandLine commandLine;
-
-        private UnknownOptionParserState( String arg, ParsedCommandLine commandLine, ParserState state )
-        {
-            this.arg = arg;
-            this.commandLine = commandLine;
-            this.state = state;
-        }
-
-        @Override
-        public boolean getHasArgument()
-        {
-            return true;
-        }
-
-        @Override
-        public ParserState onStartNextArg()
-        {
-            return onComplete();
-        }
-
-        @Override
-        public ParserState onArgument( String argument )
-        {
-            return onComplete();
-        }
-
-        @Override
-        public ParserState onComplete()
-        {
-            commandLine.addExtraValue( arg );
-            return state;
-        }
-    }
-
-    private static final class OptionComparator
-        implements Comparator<CommandLineOption>
-    {
-        public int compare( CommandLineOption option1, CommandLineOption option2 )
-        {
-            String min1 = Collections.min( option1.getOptions(), new OptionStringComparator() );
-            String min2 = Collections.min( option2.getOptions(), new OptionStringComparator() );
-            return new CaseInsensitiveStringComparator().compare( min1, min2 );
-        }
-    }
-
-    private static final class CaseInsensitiveStringComparator
-        implements Comparator<String>
-    {
-        public int compare( String option1, String option2 )
-        {
-            int diff = option1.compareToIgnoreCase( option2 );
-            if ( diff != 0 )
-            {
-                return diff;
-            }
-            return option1.compareTo( option2 );
-        }
-    }
-
-    private static final class OptionStringComparator
-        implements Comparator<String>
-    {
-        public int compare( String option1, String option2 )
-        {
-            boolean short1 = option1.length() == 1;
-            boolean short2 = option2.length() == 1;
-            if ( short1 && !short2 )
-            {
-                return -1;
-            }
-            if ( !short1 && short2 )
-            {
-                return 1;
-            }
-            return new CaseInsensitiveStringComparator().compare( option1, option2 );
-        }
-    }
-}
diff --git a/src/main/java/org/apache/maven/wrapper/cli/ParsedCommandLine.java b/src/main/java/org/apache/maven/wrapper/cli/ParsedCommandLine.java
deleted file mode 100644
index 833da3d..0000000
--- a/src/main/java/org/apache/maven/wrapper/cli/ParsedCommandLine.java
+++ /dev/null
@@ -1,140 +0,0 @@
-package org.apache.maven.wrapper.cli;
-
-/*
- * 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
- *
- *   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.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * The Parsed Command Line
- */
-public class ParsedCommandLine
-{
-    private final Map<String, ParsedCommandLineOption> optionsByString = new HashMap<String, ParsedCommandLineOption>();
-
-    private final Set<String> presentOptions = new HashSet<String>();
-
-    private final List<String> extraArguments = new ArrayList<String>();
-
-    ParsedCommandLine( Iterable<CommandLineOption> options )
-    {
-        for ( CommandLineOption option : options )
-        {
-            ParsedCommandLineOption parsedOption = new ParsedCommandLineOption();
-            for ( String optionStr : option.getOptions() )
-            {
-                optionsByString.put( optionStr, parsedOption );
-            }
-        }
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format( "options: %s, extraArguments: %s", quoteAndJoin( presentOptions ),
-                              quoteAndJoin( extraArguments ) );
-    }
-
-    private String quoteAndJoin( Iterable<String> strings )
-    {
-        StringBuilder output = new StringBuilder();
-        boolean isFirst = true;
-        for ( String string : strings )
-        {
-            if ( !isFirst )
-            {
-                output.append( ", " );
-            }
-            output.append( "'" );
-            output.append( string );
-            output.append( "'" );
-            isFirst = false;
-        }
-        return output.toString();
-    }
-
-    /**
-     * Returns true if the given option is present in this command-line.
-     * 
-     * @param option The option, without the '-' or '--' prefix.
-     * @return true if the option is present.
-     */
-    public boolean hasOption( String option )
-    {
-        option( option );
-        return presentOptions.contains( option );
-    }
-
-    /**
-     * See also {@link #hasOption}.
-     * 
-     * @param logLevelOptions the options to check
-     * @return true if any of the passed options is present
-     */
-    public boolean hasAnyOption( Collection<String> logLevelOptions )
-    {
-        for ( String option : logLevelOptions )
-        {
-            if ( hasOption( option ) )
-            {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Returns the value of the given option.
-     * 
-     * @param option The option, without the '-' or '--' prefix.
-     * @return The option. never returns null.
-     */
-    public ParsedCommandLineOption option( String option )
-    {
-        ParsedCommandLineOption parsedOption = optionsByString.get( option );
-        if ( parsedOption == null )
-        {
-            throw new IllegalArgumentException( String.format( "Option '%s' not defined.", option ) );
-        }
-        return parsedOption;
-    }
-
-    public List<String> getExtraArguments()
-    {
-        return extraArguments;
-    }
-
-    void addExtraValue( String value )
-    {
-        extraArguments.add( value );
-    }
-
-    ParsedCommandLineOption addOption( String optionStr, CommandLineOption option )
-    {
-        ParsedCommandLineOption parsedOption = optionsByString.get( optionStr );
-        presentOptions.addAll( option.getOptions() );
-        return parsedOption;
-    }
-}
diff --git a/src/main/java/org/apache/maven/wrapper/cli/ParsedCommandLineOption.java b/src/main/java/org/apache/maven/wrapper/cli/ParsedCommandLineOption.java
deleted file mode 100644
index d75acc0..0000000
--- a/src/main/java/org/apache/maven/wrapper/cli/ParsedCommandLineOption.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.apache.maven.wrapper.cli;
-
-/*
- * 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
- *
- *   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.util.ArrayList;
-import java.util.List;
-
-/**
- * The Parsed Command Line Option
- */
-public class ParsedCommandLineOption
-{
-    private final List<String> values = new ArrayList<String>();
-
-    public String getValue()
-    {
-        if ( !hasValue() )
-        {
-            throw new IllegalStateException( "Option does not have any value." );
-        }
-        if ( values.size() > 1 )
-        {
-            throw new IllegalStateException( "Option has multiple values." );
-        }
-        return values.get( 0 );
-    }
-
-    public List<String> getValues()
-    {
-        return values;
-    }
-
-    public void addArgument( String argument )
-    {
-        values.add( argument );
-    }
-
-    public boolean hasValue()
-    {
-        return !values.isEmpty();
-    }
-}
diff --git a/src/main/java/org/apache/maven/wrapper/cli/ProjectPropertiesCommandLineConverter.java b/src/main/java/org/apache/maven/wrapper/cli/ProjectPropertiesCommandLineConverter.java
deleted file mode 100644
index eaa5b11..0000000
--- a/src/main/java/org/apache/maven/wrapper/cli/ProjectPropertiesCommandLineConverter.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.apache.maven.wrapper.cli;
-
-/*
- * 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
- *
- *   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.
- */
-
-/**
- * The Project Properties CommandLine Converter
- */
-public class ProjectPropertiesCommandLineConverter
-    extends AbstractPropertiesCommandLineConverter
-{
-
-    @Override
-    protected String getPropertyOption()
-    {
-        return "P";
-    }
-
-    @Override
-    protected String getPropertyOptionDetailed()
-    {
-        return "project-prop";
-    }
-
-    @Override
-    protected String getPropertyOptionDescription()
-    {
-        return "Set project property for the build script (e.g. -Pmyprop=myvalue).";
-    }
-}
diff --git a/src/main/java/org/apache/maven/wrapper/cli/SystemPropertiesCommandLineConverter.java b/src/main/java/org/apache/maven/wrapper/cli/SystemPropertiesCommandLineConverter.java
deleted file mode 100644
index 6a1fca5..0000000
--- a/src/main/java/org/apache/maven/wrapper/cli/SystemPropertiesCommandLineConverter.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.apache.maven.wrapper.cli;
-
-/*
- * 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
- *
- *   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.
- */
-
-/**
- * The System Properties Command Line Converter
- */
-public class SystemPropertiesCommandLineConverter
-    extends AbstractPropertiesCommandLineConverter
-{
-
-    @Override
-    protected String getPropertyOption()
-    {
-        return "D";
-    }
-
-    @Override
-    protected String getPropertyOptionDetailed()
-    {
-        return "system-prop";
-    }
-
-    @Override
-    protected String getPropertyOptionDescription()
-    {
-        return "Set system property of the JVM (e.g. -Dmyprop=myvalue).";
-    }
-}
\ No newline at end of file

[maven-studies] 03/04: Merge branch 'maven-wrapper' of https://gitbox.apache.org/repos/asf/maven-studies into maven-wrapper

Posted by hb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 6939d490f2c9cd38200b72b6e4fcfed76981cf8e
Merge: 480924f bd8a47e
Author: rfscholte <rf...@apache.org>
AuthorDate: Thu Apr 16 22:56:43 2020 +0200

    Merge branch 'maven-wrapper' of https://gitbox.apache.org/repos/asf/maven-studies into maven-wrapper

 src/assembly/shared/mvnw | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

[maven-studies] 01/04: let curl following redirect

Posted by hb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit bd8a47e8b64367e7f56cf22a045a28268db0fa45
Merge: d4891ab b1d7cf8
Author: Robert Scholte <rf...@apache.org>
AuthorDate: Sun Apr 12 18:39:42 2020 +0200

    let curl following redirect

 src/assembly/shared/mvnw | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)