You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by Robert Scholte <rf...@apache.org> on 2017/03/18 18:12:17 UTC

Re: maven git commit: [MNG-6069] Migrate to non deprecated parts of Commons CLI

Are you *really* sure these public static final fields are only used here?

On Sat, 18 Mar 2017 18:19:05 +0100, <kh...@apache.org> wrote:

> Repository: maven
> Updated Branches:
>   refs/heads/MNG-6069 [created] b8efec709
>
>
> [MNG-6069] Migrate to non deprecated parts of Commons CLI
>
>
> Project: http://git-wip-us.apache.org/repos/asf/maven/repo
> Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/b8efec70
> Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/b8efec70
> Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/b8efec70
>
> Branch: refs/heads/MNG-6069
> Commit: b8efec709cce46358da2eaa3d1c288f16ab4c8a8
> Parents: 55eeb32
> Author: Karl Heinz Marbaise <kh...@apache.org>
> Authored: Sat Mar 18 18:18:27 2017 +0100
> Committer: Karl Heinz Marbaise <kh...@apache.org>
> Committed: Sat Mar 18 18:18:27 2017 +0100
>
> ----------------------------------------------------------------------
>  .../java/org/apache/maven/cli/CLIManager.java   | 118  
> ++++++++++---------
>  1 file changed, 60 insertions(+), 58 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/maven/blob/b8efec70/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
> ----------------------------------------------------------------------
> diff --git  
> a/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java  
> b/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
> index a9038bf..20376d9 100644
> --- a/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
> +++ b/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
> @@ -24,9 +24,9 @@ import java.io.PrintWriter;
> import org.apache.commons.cli.CommandLine;
>  import org.apache.commons.cli.CommandLineParser;
> -import org.apache.commons.cli.GnuParser;
> +import org.apache.commons.cli.DefaultParser;
>  import org.apache.commons.cli.HelpFormatter;
> -import org.apache.commons.cli.OptionBuilder;
> +import org.apache.commons.cli.Option;
>  import org.apache.commons.cli.Options;
>  import org.apache.commons.cli.ParseException;
> @@ -35,43 +35,43 @@ import org.apache.commons.cli.ParseException;
>   */
>  public class CLIManager
>  {
> -    public static final char ALTERNATE_POM_FILE = 'f';
> +    public static final String ALTERNATE_POM_FILE = "f";
> -    public static final char BATCH_MODE = 'B';
> +    public static final String BATCH_MODE = "B";
> -    public static final char SET_SYSTEM_PROPERTY = 'D';
> +    public static final String SET_SYSTEM_PROPERTY = "D";
> -    public static final char OFFLINE = 'o';
> +    public static final String OFFLINE = "o";
> -    public static final char QUIET = 'q';
> +    public static final String QUIET = "q";
> -    public static final char DEBUG = 'X';
> +    public static final String DEBUG = "X";
> -    public static final char ERRORS = 'e';
> +    public static final String ERRORS = "e";
> -    public static final char HELP = 'h';
> +    public static final String HELP = "h";
> -    public static final char VERSION = 'v';
> +    public static final String VERSION = "v";
> -    public static final char SHOW_VERSION = 'V';
> +    public static final String SHOW_VERSION = "V";
> -    public static final char NON_RECURSIVE = 'N';
> +    public static final String NON_RECURSIVE = "N";
> -    public static final char UPDATE_SNAPSHOTS = 'U';
> +    public static final String UPDATE_SNAPSHOTS = "U";
> -    public static final char ACTIVATE_PROFILES = 'P';
> +    public static final String ACTIVATE_PROFILES = "P";
>     public static final String SUPRESS_SNAPSHOT_UPDATES = "nsu";
> -    public static final char CHECKSUM_FAILURE_POLICY = 'C';
> +    public static final String CHECKSUM_FAILURE_POLICY = "C";
> -    public static final char CHECKSUM_WARNING_POLICY = 'c';
> +    public static final String CHECKSUM_WARNING_POLICY = "c";
> -    public static final char ALTERNATE_USER_SETTINGS = 's';
> +    public static final String ALTERNATE_USER_SETTINGS = "s";
>     public static final String ALTERNATE_GLOBAL_SETTINGS = "gs";
> -    public static final char ALTERNATE_USER_TOOLCHAINS = 't';
> +    public static final String ALTERNATE_USER_TOOLCHAINS = "t";
>     public static final String ALTERNATE_GLOBAL_TOOLCHAINS = "gt";
> @@ -103,50 +103,52 @@ public class CLIManager
>     protected Options options;
> -    @SuppressWarnings( { "static-access", "checkstyle:linelength" } )
> +    // CHECKSTYLE_OFF: LineLength
>      public CLIManager()
>      {
>          options = new Options();
> -        options.addOption( OptionBuilder.withLongOpt( "help"  
> ).withDescription( "Display help information" ).create( HELP ) );
> -        options.addOption( OptionBuilder.withLongOpt( "file"  
> ).hasArg().withDescription( "Force the use of an alternate POM file (or  
> directory with pom.xml)" ).create( ALTERNATE_POM_FILE ) );
> -        options.addOption( OptionBuilder.withLongOpt( "define"  
> ).hasArg().withDescription( "Define a system property" ).create(  
> SET_SYSTEM_PROPERTY ) );
> -        options.addOption( OptionBuilder.withLongOpt( "offline"  
> ).withDescription( "Work offline" ).create( OFFLINE ) );
> -        options.addOption( OptionBuilder.withLongOpt( "version"  
> ).withDescription( "Display version information" ).create( VERSION ) );
> -        options.addOption( OptionBuilder.withLongOpt( "quiet"  
> ).withDescription( "Quiet output - only show errors" ).create( QUIET ) );
> -        options.addOption( OptionBuilder.withLongOpt( "debug"  
> ).withDescription( "Produce execution debug output" ).create( DEBUG ) );
> -        options.addOption( OptionBuilder.withLongOpt( "errors"  
> ).withDescription( "Produce execution error messages" ).create( ERRORS )  
> );
> -        options.addOption( OptionBuilder.withLongOpt( "non-recursive"  
> ).withDescription( "Do not recurse into sub-projects" ).create(  
> NON_RECURSIVE ) );
> -        options.addOption( OptionBuilder.withLongOpt(  
> "update-snapshots" ).withDescription( "Forces a check for missing  
> releases and updated snapshots on remote repositories" ).create(  
> UPDATE_SNAPSHOTS ) );
> -        options.addOption( OptionBuilder.withLongOpt(  
> "activate-profiles" ).withDescription( "Comma-delimited list of profiles  
> to activate" ).hasArg().create( ACTIVATE_PROFILES ) );
> -        options.addOption( OptionBuilder.withLongOpt( "batch-mode"  
> ).withDescription( "Run in non-interactive (batch) mode (disables output  
> color)" ).create( BATCH_MODE ) );
> -        options.addOption( OptionBuilder.withLongOpt(  
> "no-snapshot-updates" ).withDescription( "Suppress SNAPSHOT updates"  
> ).create( SUPRESS_SNAPSHOT_UPDATES ) );
> -        options.addOption( OptionBuilder.withLongOpt(  
> "strict-checksums" ).withDescription( "Fail the build if checksums don't  
> match" ).create( CHECKSUM_FAILURE_POLICY ) );
> -        options.addOption( OptionBuilder.withLongOpt( "lax-checksums"  
> ).withDescription( "Warn if checksums don't match" ).create(  
> CHECKSUM_WARNING_POLICY ) );
> -        options.addOption( OptionBuilder.withLongOpt( "settings"  
> ).withDescription( "Alternate path for the user settings file"  
> ).hasArg().create( ALTERNATE_USER_SETTINGS ) );
> -        options.addOption( OptionBuilder.withLongOpt( "global-settings"  
> ).withDescription( "Alternate path for the global settings file"  
> ).hasArg().create( ALTERNATE_GLOBAL_SETTINGS ) );
> -        options.addOption( OptionBuilder.withLongOpt( "toolchains"  
> ).withDescription( "Alternate path for the user toolchains file"  
> ).hasArg().create( ALTERNATE_USER_TOOLCHAINS ) );
> -        options.addOption( OptionBuilder.withLongOpt(  
> "global-toolchains" ).withDescription( "Alternate path for the global  
> toolchains file" ).hasArg().create( ALTERNATE_GLOBAL_TOOLCHAINS ) );
> -        options.addOption( OptionBuilder.withLongOpt( "fail-fast"  
> ).withDescription( "Stop at first failure in reactorized builds"  
> ).create( FAIL_FAST ) );
> -        options.addOption( OptionBuilder.withLongOpt( "fail-at-end"  
> ).withDescription( "Only fail the build afterwards; allow all  
> non-impacted builds to continue" ).create( FAIL_AT_END ) );
> -        options.addOption( OptionBuilder.withLongOpt( "fail-never"  
> ).withDescription( "NEVER fail the build, regardless of project result"  
> ).create( FAIL_NEVER ) );
> -        options.addOption( OptionBuilder.withLongOpt( "resume-from"  
> ).hasArg().withDescription( "Resume reactor from specified project"  
> ).create( RESUME_FROM ) );
> -        options.addOption( OptionBuilder.withLongOpt( "projects"  
> ).withDescription( "Comma-delimited list of specified reactor projects  
> to build instead of all projects. A project can be specified by  
> [groupId]:artifactId or by its relative path" ).hasArg().create(  
> PROJECT_LIST ) );
> -        options.addOption( OptionBuilder.withLongOpt( "also-make"  
> ).withDescription( "If project list is specified, also build projects  
> required by the list" ).create( ALSO_MAKE ) );
> -        options.addOption( OptionBuilder.withLongOpt(  
> "also-make-dependents" ).withDescription( "If project list is specified,  
> also build projects that depend on projects on the list" ).create(  
> ALSO_MAKE_DEPENDENTS ) );
> -        options.addOption( OptionBuilder.withLongOpt( "log-file"  
> ).hasArg().withDescription( "Log file where all build output will go  
> (disables output color)" ).create( LOG_FILE ) );
> -        options.addOption( OptionBuilder.withLongOpt( "show-version"  
> ).withDescription( "Display version information WITHOUT stopping build"  
> ).create( SHOW_VERSION ) );
> -        options.addOption( OptionBuilder.withLongOpt(  
> "encrypt-master-password" ).hasOptionalArg().withDescription( "Encrypt  
> master security password" ).create( ENCRYPT_MASTER_PASSWORD ) );
> -        options.addOption( OptionBuilder.withLongOpt(  
> "encrypt-password" ).hasOptionalArg().withDescription( "Encrypt server  
> password" ).create( ENCRYPT_PASSWORD ) );
> -        options.addOption( OptionBuilder.withLongOpt( "threads"  
> ).hasArg().withDescription( "Thread count, for instance 2.0C where C is  
> core multiplied" ).create( THREADS ) );
> -        options.addOption( OptionBuilder.withLongOpt(  
> "legacy-local-repository" ).withDescription( "Use Maven 2 Legacy Local  
> Repository behaviour, ie no use of _remote.repositories. Can also be  
> activated by using -Dmaven.legacyLocalRepo=true" ).create(  
> LEGACY_LOCAL_REPOSITORY ) );
> -        options.addOption( OptionBuilder.withLongOpt( "builder"  
> ).hasArg().withDescription( "The id of the build strategy to use"  
> ).create( BUILDER ) );
> +        options.addOption( Option.builder( HELP ).longOpt( "help"  
> ).desc( "Display help information" ).build() );
> +        options.addOption( Option.builder( ALTERNATE_POM_FILE  
> ).longOpt( "file" ).hasArg().desc( "Force the use of an alternate POM  
> file (or directory with pom.xml)" ).build() );
> +        options.addOption( Option.builder( SET_SYSTEM_PROPERTY  
> ).longOpt( "define" ).hasArgs().valueSeparator().desc( "Define a system  
> property" ).build() );
> +        options.addOption( Option.builder( OFFLINE ).longOpt( "offline"  
> ).desc( "Work offline" ).build() );
> +        options.addOption( Option.builder( VERSION ).longOpt( "version"  
> ).desc( "Display version information" ).build() );
> +        options.addOption( Option.builder( QUIET ).longOpt( "quiet"  
> ).desc( "Quiet output - only show errors" ).build() );
> +        options.addOption( Option.builder( DEBUG ).longOpt( "debug"  
> ).desc( "Produce execution debug output" ).build() );
> +        options.addOption( Option.builder( ERRORS ).longOpt( "errors"  
> ).desc( "Produce execution error messages" ).build() );
> +        options.addOption( Option.builder( NON_RECURSIVE ).longOpt(  
> "non-recursive" ).desc( "Do not recurse into sub-projects" ).build() );
> +        options.addOption( Option.builder( UPDATE_SNAPSHOTS ).longOpt(  
> "update-snapshots" ).desc( "Forces a check for missing releases and  
> updated snapshots on remote repositories" ).build() );
> +        options.addOption( Option.builder( ACTIVATE_PROFILES ).longOpt(  
> "activate-profiles" ).desc( "Comma-delimited list of profiles to  
> activate" ).hasArg().build() );
> +        options.addOption( Option.builder( BATCH_MODE ).longOpt(  
> "batch-mode" ).desc( "Run in non-interactive (batch) mode (disables  
> output color)" ).build() );
> +        options.addOption( Option.builder( SUPRESS_SNAPSHOT_UPDATES  
> ).longOpt( "no-snapshot-updates" ).desc( "Suppress SNAPSHOT updates"  
> ).build() );
> +        options.addOption( Option.builder( CHECKSUM_FAILURE_POLICY  
> ).longOpt( "strict-checksums" ).desc( "Fail the build if checksums don't  
> match" ).build() );
> +        options.addOption( Option.builder( CHECKSUM_WARNING_POLICY  
> ).longOpt( "lax-checksums" ).desc( "Warn if checksums don't match"  
> ).build() );
> +        options.addOption( Option.builder( ALTERNATE_USER_SETTINGS  
> ).longOpt( "settings" ).hasArg().desc( "Alternate path for the user  
> settings file" ).build() );
> +        options.addOption( Option.builder( ALTERNATE_GLOBAL_SETTINGS  
> ).longOpt( "global-settings" ).hasArg().desc( "Alternate path for the  
> global settings file" ).build() );
> +        options.addOption( Option.builder( ALTERNATE_USER_TOOLCHAINS  
> ).longOpt( "toolchains" ).hasArg().desc( "Alternate path for the user  
> toolchains file" ).hasArg().build() );
> +        options.addOption( Option.builder( ALTERNATE_GLOBAL_TOOLCHAINS  
> ).longOpt( "global-toolchains" ).desc( "Alternate path for the global  
> toolchains file" ).hasArg().build() );
> +        options.addOption( Option.builder( FAIL_FAST ).longOpt(  
> "fail-fast" ).desc( "Stop at first failure in reactorized builds"  
> ).build() );
> +        options.addOption( Option.builder( FAIL_AT_END ).longOpt(  
> "fail-at-end" ).desc( "Only fail the build afterwards; allow all  
> non-impacted builds to continue" ).build() );
> +        options.addOption( Option.builder( FAIL_NEVER ).longOpt(  
> "fail-never" ).desc( "NEVER fail the build, regardless of project  
> result" ).build() );
> +        options.addOption( Option.builder( RESUME_FROM ).longOpt(  
> "resume-from" ).hasArg().desc( "Resume reactor from specified project"  
> ).build() );
> +        options.addOption( Option.builder( PROJECT_LIST ).longOpt(  
> "projects" ).desc( "Comma-delimited list of specified reactor projects  
> to build instead of all projects. A project can be specified by  
> [groupId]:artifactId or by its relative path." ).hasArg().build() );
> +        options.addOption( Option.builder( ALSO_MAKE ).longOpt(  
> "also-make" ).desc( "If project list is specified, also build projects  
> required by the list" ).build() );
> +        options.addOption( Option.builder( ALSO_MAKE_DEPENDENTS  
> ).longOpt( "also-make-dependents" ).desc( "If project list is specified,  
> also build projects that depend on projects on the list" ).build() );
> +        options.addOption( Option.builder( LOG_FILE ).longOpt(  
> "log-file" ).hasArg().desc( "Log file where all build output will go"  
> ).build() );
> +        options.addOption( Option.builder( SHOW_VERSION ).longOpt(  
> "show-version" ).desc( "Display version information WITHOUT stopping  
> build" ).build() );
> +        options.addOption( Option.builder( ENCRYPT_MASTER_PASSWORD  
> ).longOpt( "encrypt-master-password" ).optionalArg( true ).desc(  
> "Encrypt master security password" ).build() );
> +        options.addOption( Option.builder( ENCRYPT_PASSWORD ).longOpt(  
> "encrypt-password" ).optionalArg( true ).desc( "Encrypt server password"  
> ).build() );
> +        options.addOption( Option.builder( THREADS ).longOpt( "threads"  
> ).hasArg().desc( "Thread count, for instance 2.0C where C is core  
> multiplied" ).build() );
> +        options.addOption( Option.builder( LEGACY_LOCAL_REPOSITORY  
> ).longOpt( "legacy-local-repository" ).desc( "Use Maven 2 Legacy Local  
> Repository behaviour, ie no use of _remote.repositories. Can also be  
> activated by using -Dmaven.legacyLocalRepo=true" ).build() );
> +        options.addOption( Option.builder( BUILDER ).longOpt( "builder"  
> ).hasArg().desc( "The id of the build strategy to use" ).build() );
>         // Adding this back in for compatibility with the verifier that  
> hard codes this option.
> -        options.addOption( OptionBuilder.withLongOpt(  
> "no-plugin-registry" ).withDescription( "Ineffective, only kept for  
> backward compatibility" ).create( "npr" ) );
> -        options.addOption( OptionBuilder.withLongOpt(  
> "check-plugin-updates" ).withDescription( "Ineffective, only kept for  
> backward compatibility" ).create( "cpu" ) );
> -        options.addOption( OptionBuilder.withLongOpt( "update-plugins"  
> ).withDescription( "Ineffective, only kept for backward compatibility"  
> ).create( "up" ) );
> -        options.addOption( OptionBuilder.withLongOpt(  
> "no-plugin-updates" ).withDescription( "Ineffective, only kept for  
> backward compatibility" ).create( "npu" ) );
> +        options.addOption( Option.builder( "npr" ).longOpt(  
> "no-plugin-registry" ).desc( "Ineffective, only kept for backward  
> compatibility" ).build() );
> +        options.addOption( Option.builder( "cpu" ).longOpt(  
> "check-plugin-updates" ).desc( "Ineffective, only kept for backward  
> compatibility" ).build() );
> +        options.addOption( Option.builder( "up" ).longOpt(  
> "update-plugins" ).desc( "Ineffective, only kept for backward  
> compatibility" ).build() );
> +        options.addOption( Option.builder( "npu" ).longOpt(  
> "no-plugin-updates" ).desc( "Ineffective, only kept for backward  
> compatibility" ).build() );
> +
>      }
> +    // CHECKSTYLE_ON: LineLength
>     public CommandLine parse( String[] args )
>          throws ParseException
> @@ -154,7 +156,7 @@ public class CLIManager
>          // We need to eat any quotes surrounding arguments...
>          String[] cleanArgs = CleanArgument.cleanArgs( args );
> -        CommandLineParser parser = new GnuParser();
> +        CommandLineParser parser = new DefaultParser();
>         return parser.parse( options, cleanArgs );
>      }

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org


Re: maven git commit: [MNG-6069] Migrate to non deprecated parts of Commons CLI

Posted by Stephen Connolly <st...@gmail.com>.
I think I have fixed this issue with

b424af57a56a4059763000b87bbe5e4331329b36

On 19 March 2017 at 20:24, Stephen Connolly <stephen.alan.connolly@gmail.com
> wrote:

> Tests are failing because system properties are not being parsed correctly
> with the new builder based options.
>
> It seems that we get for `-Drevision=1.3.0 -Dmaven.local.repo=/foo/bar`
> when on MavenCli line 1676 we get defStrs == { "revision", "1.3.0",
> "maven.local.repo", "/foo/bar"}
>
> This results in setting system properties:
>
> revision=true
> 1.3.0=true
> maven.local.repo=true
> /foo/bar=true
>
> So there's the reason why the tests are failing. I suspect the switch from
> GnuParser is the root cause... not sure what the non deprecated way to fix
> it is
>
> On 19 March 2017 at 18:36, Stephen Connolly <stephen.alan.connolly@gmail.
> com> wrote:
>
>> If the tests are not working by Monday then it's out on its ear ;-)
>>
>> On Sun 19 Mar 2017 at 18:11, Karl Heinz Marbaise <kh...@gmx.de>
>> wrote:
>>
>>> Hi,
>>>
>>> I'm not sure if this for 3.5.0 beta or what ever we call it...at the
>>> moment the tests are not working...and I need to dive into it why are
>>> failing..it looks there are missing some dependencies..but I'm note sure
>>> about it...
>>>
>>> But it looks you have already decided what to do...
>>>
>>> Kind regards
>>> Karl Heinz Marbaise
>>>
>>> On 19/03/17 18:53, Stephen Connolly wrote:
>>> > Hervé and I were discussing this on IRC... perhaps we can merge this
>>> for
>>> > 3.5.0-beta-1 and if it causes issues then we can revert for 3.5.0
>>> >
>>> > As these are public static final String and char constants, it should
>>> not
>>> > break binary compatibility as javac inlines static final constants...
>>> it
>>> > may break compile compatibility, but that is OK.
>>> >
>>> > WDYT? If we have consensus then we'll merge tomorrow before I start the
>>> > release
>>> >
>>> > On 18 March 2017 at 18:12, Robert Scholte <rf...@apache.org>
>>> wrote:
>>> >
>>> >> Are you *really* sure these public static final fields are only used
>>> here?
>>> >>
>>> >>
>>> >> On Sat, 18 Mar 2017 18:19:05 +0100, <kh...@apache.org> wrote:
>>> >>
>>> >> Repository: maven
>>> >>> Updated Branches:
>>> >>>   refs/heads/MNG-6069 [created] b8efec709
>>> >>>
>>> >>>
>>> >>> [MNG-6069] Migrate to non deprecated parts of Commons CLI
>>> >>>
>>> >>>
>>> >>> Project: http://git-wip-us.apache.org/repos/asf/maven/repo
>>> >>> Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/b8efec70
>>> >>> Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/b8efec70
>>> >>> Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/b8efec70
>>> >>>
>>> >>> Branch: refs/heads/MNG-6069
>>> >>> Commit: b8efec709cce46358da2eaa3d1c288f16ab4c8a8
>>> >>> Parents: 55eeb32
>>> >>> Author: Karl Heinz Marbaise <kh...@apache.org>
>>> >>> Authored: Sat Mar 18 18:18:27 2017 +0100
>>> >>> Committer: Karl Heinz Marbaise <kh...@apache.org>
>>> >>> Committed: Sat Mar 18 18:18:27 2017 +0100
>>> >>>
>>> >>> ------------------------------------------------------------
>>> ----------
>>> >>>  .../java/org/apache/maven/cli/CLIManager.java   | 118
>>> >>> ++++++++++---------
>>> >>>  1 file changed, 60 insertions(+), 58 deletions(-)
>>> >>> ------------------------------------------------------------
>>> ----------
>>> >>>
>>> >>>
>>> >>> http://git-wip-us.apache.org/repos/asf/maven/blob/b8efec70/m
>>> >>> aven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
>>> >>> ------------------------------------------------------------
>>> ----------
>>> >>> diff --git a/maven-embedder/src/main/java
>>> /org/apache/maven/cli/CLIManager.java
>>> >>> b/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
>>> >>> index a9038bf..20376d9 100644
>>> >>> --- a/maven-embedder/src/main/java/org/apache/maven/cli/CLIManag
>>> er.java
>>> >>> +++ b/maven-embedder/src/main/java/org/apache/maven/cli/CLIManag
>>> er.java
>>> >>> @@ -24,9 +24,9 @@ import java.io.PrintWriter;
>>> >>> import org.apache.commons.cli.CommandLine;
>>> >>>  import org.apache.commons.cli.CommandLineParser;
>>> >>> -import org.apache.commons.cli.GnuParser;
>>> >>> +import org.apache.commons.cli.DefaultParser;
>>> >>>  import org.apache.commons.cli.HelpFormatter;
>>> >>> -import org.apache.commons.cli.OptionBuilder;
>>> >>> +import org.apache.commons.cli.Option;
>>> >>>  import org.apache.commons.cli.Options;
>>> >>>  import org.apache.commons.cli.ParseException;
>>> >>> @@ -35,43 +35,43 @@ import org.apache.commons.cli.ParseException;
>>> >>>   */
>>> >>>  public class CLIManager
>>> >>>  {
>>> >>> -    public static final char ALTERNATE_POM_FILE = 'f';
>>> >>> +    public static final String ALTERNATE_POM_FILE = "f";
>>> >>> -    public static final char BATCH_MODE = 'B';
>>> >>> +    public static final String BATCH_MODE = "B";
>>> >>> -    public static final char SET_SYSTEM_PROPERTY = 'D';
>>> >>> +    public static final String SET_SYSTEM_PROPERTY = "D";
>>> >>> -    public static final char OFFLINE = 'o';
>>> >>> +    public static final String OFFLINE = "o";
>>> >>> -    public static final char QUIET = 'q';
>>> >>> +    public static final String QUIET = "q";
>>> >>> -    public static final char DEBUG = 'X';
>>> >>> +    public static final String DEBUG = "X";
>>> >>> -    public static final char ERRORS = 'e';
>>> >>> +    public static final String ERRORS = "e";
>>> >>> -    public static final char HELP = 'h';
>>> >>> +    public static final String HELP = "h";
>>> >>> -    public static final char VERSION = 'v';
>>> >>> +    public static final String VERSION = "v";
>>> >>> -    public static final char SHOW_VERSION = 'V';
>>> >>> +    public static final String SHOW_VERSION = "V";
>>> >>> -    public static final char NON_RECURSIVE = 'N';
>>> >>> +    public static final String NON_RECURSIVE = "N";
>>> >>> -    public static final char UPDATE_SNAPSHOTS = 'U';
>>> >>> +    public static final String UPDATE_SNAPSHOTS = "U";
>>> >>> -    public static final char ACTIVATE_PROFILES = 'P';
>>> >>> +    public static final String ACTIVATE_PROFILES = "P";
>>> >>>     public static final String SUPRESS_SNAPSHOT_UPDATES = "nsu";
>>> >>> -    public static final char CHECKSUM_FAILURE_POLICY = 'C';
>>> >>> +    public static final String CHECKSUM_FAILURE_POLICY = "C";
>>> >>> -    public static final char CHECKSUM_WARNING_POLICY = 'c';
>>> >>> +    public static final String CHECKSUM_WARNING_POLICY = "c";
>>> >>> -    public static final char ALTERNATE_USER_SETTINGS = 's';
>>> >>> +    public static final String ALTERNATE_USER_SETTINGS = "s";
>>> >>>     public static final String ALTERNATE_GLOBAL_SETTINGS = "gs";
>>> >>> -    public static final char ALTERNATE_USER_TOOLCHAINS = 't';
>>> >>> +    public static final String ALTERNATE_USER_TOOLCHAINS = "t";
>>> >>>     public static final String ALTERNATE_GLOBAL_TOOLCHAINS = "gt";
>>> >>> @@ -103,50 +103,52 @@ public class CLIManager
>>> >>>     protected Options options;
>>> >>> -    @SuppressWarnings( { "static-access", "checkstyle:linelength" }
>>> )
>>> >>> +    // CHECKSTYLE_OFF: LineLength
>>> >>>      public CLIManager()
>>> >>>      {
>>> >>>          options = new Options();
>>> >>> -        options.addOption( OptionBuilder.withLongOpt( "help"
>>> >>> ).withDescription( "Display help information" ).create( HELP ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt( "file"
>>> >>> ).hasArg().withDescription( "Force the use of an alternate POM file
>>> (or
>>> >>> directory with pom.xml)" ).create( ALTERNATE_POM_FILE ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt( "define"
>>> >>> ).hasArg().withDescription( "Define a system property" ).create(
>>> >>> SET_SYSTEM_PROPERTY ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt( "offline"
>>> >>> ).withDescription( "Work offline" ).create( OFFLINE ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt( "version"
>>> >>> ).withDescription( "Display version information" ).create( VERSION )
>>> );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt( "quiet"
>>> >>> ).withDescription( "Quiet output - only show errors" ).create( QUIET
>>> ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt( "debug"
>>> >>> ).withDescription( "Produce execution debug output" ).create( DEBUG
>>> ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt( "errors"
>>> >>> ).withDescription( "Produce execution error messages" ).create(
>>> ERRORS ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>>> "non-recursive"
>>> >>> ).withDescription( "Do not recurse into sub-projects" ).create(
>>> >>> NON_RECURSIVE ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>>> "update-snapshots"
>>> >>> ).withDescription( "Forces a check for missing releases and updated
>>> >>> snapshots on remote repositories" ).create( UPDATE_SNAPSHOTS ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>>> >>> "activate-profiles" ).withDescription( "Comma-delimited list of
>>> profiles to
>>> >>> activate" ).hasArg().create( ACTIVATE_PROFILES ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt( "batch-mode"
>>> >>> ).withDescription( "Run in non-interactive (batch) mode (disables
>>> output
>>> >>> color)" ).create( BATCH_MODE ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>>> >>> "no-snapshot-updates" ).withDescription( "Suppress SNAPSHOT updates"
>>> >>> ).create( SUPRESS_SNAPSHOT_UPDATES ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>>> "strict-checksums"
>>> >>> ).withDescription( "Fail the build if checksums don't match"
>>> ).create(
>>> >>> CHECKSUM_FAILURE_POLICY ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>>> "lax-checksums"
>>> >>> ).withDescription( "Warn if checksums don't match" ).create(
>>> >>> CHECKSUM_WARNING_POLICY ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt( "settings"
>>> >>> ).withDescription( "Alternate path for the user settings file"
>>> >>> ).hasArg().create( ALTERNATE_USER_SETTINGS ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>>> "global-settings"
>>> >>> ).withDescription( "Alternate path for the global settings file"
>>> >>> ).hasArg().create( ALTERNATE_GLOBAL_SETTINGS ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt( "toolchains"
>>> >>> ).withDescription( "Alternate path for the user toolchains file"
>>> >>> ).hasArg().create( ALTERNATE_USER_TOOLCHAINS ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>>> >>> "global-toolchains" ).withDescription( "Alternate path for the global
>>> >>> toolchains file" ).hasArg().create( ALTERNATE_GLOBAL_TOOLCHAINS ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt( "fail-fast"
>>> >>> ).withDescription( "Stop at first failure in reactorized builds"
>>> ).create(
>>> >>> FAIL_FAST ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt( "fail-at-end"
>>> >>> ).withDescription( "Only fail the build afterwards; allow all
>>> non-impacted
>>> >>> builds to continue" ).create( FAIL_AT_END ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt( "fail-never"
>>> >>> ).withDescription( "NEVER fail the build, regardless of project
>>> result"
>>> >>> ).create( FAIL_NEVER ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt( "resume-from"
>>> >>> ).hasArg().withDescription( "Resume reactor from specified project"
>>> >>> ).create( RESUME_FROM ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt( "projects"
>>> >>> ).withDescription( "Comma-delimited list of specified reactor
>>> projects to
>>> >>> build instead of all projects. A project can be specified by
>>> >>> [groupId]:artifactId or by its relative path" ).hasArg().create(
>>> >>> PROJECT_LIST ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt( "also-make"
>>> >>> ).withDescription( "If project list is specified, also build projects
>>> >>> required by the list" ).create( ALSO_MAKE ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>>> >>> "also-make-dependents" ).withDescription( "If project list is
>>> specified,
>>> >>> also build projects that depend on projects on the list" ).create(
>>> >>> ALSO_MAKE_DEPENDENTS ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt( "log-file"
>>> >>> ).hasArg().withDescription( "Log file where all build output will go
>>> >>> (disables output color)" ).create( LOG_FILE ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt( "show-version"
>>> >>> ).withDescription( "Display version information WITHOUT stopping
>>> build"
>>> >>> ).create( SHOW_VERSION ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>>> >>> "encrypt-master-password" ).hasOptionalArg().withDescription(
>>> "Encrypt
>>> >>> master security password" ).create( ENCRYPT_MASTER_PASSWORD ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>>> "encrypt-password"
>>> >>> ).hasOptionalArg().withDescription( "Encrypt server password"
>>> ).create(
>>> >>> ENCRYPT_PASSWORD ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt( "threads"
>>> >>> ).hasArg().withDescription( "Thread count, for instance 2.0C where C
>>> is
>>> >>> core multiplied" ).create( THREADS ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>>> >>> "legacy-local-repository" ).withDescription( "Use Maven 2 Legacy
>>> Local
>>> >>> Repository behaviour, ie no use of _remote.repositories. Can also be
>>> >>> activated by using -Dmaven.legacyLocalRepo=true" ).create(
>>> >>> LEGACY_LOCAL_REPOSITORY ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt( "builder"
>>> >>> ).hasArg().withDescription( "The id of the build strategy to use"
>>> ).create(
>>> >>> BUILDER ) );
>>> >>> +        options.addOption( Option.builder( HELP ).longOpt( "help"
>>> >>> ).desc( "Display help information" ).build() );
>>> >>> +        options.addOption( Option.builder( ALTERNATE_POM_FILE
>>> ).longOpt(
>>> >>> "file" ).hasArg().desc( "Force the use of an alternate POM file (or
>>> >>> directory with pom.xml)" ).build() );
>>> >>> +        options.addOption( Option.builder( SET_SYSTEM_PROPERTY
>>> >>> ).longOpt( "define" ).hasArgs().valueSeparator().desc( "Define a
>>> system
>>> >>> property" ).build() );
>>> >>> +        options.addOption( Option.builder( OFFLINE ).longOpt(
>>> "offline"
>>> >>> ).desc( "Work offline" ).build() );
>>> >>> +        options.addOption( Option.builder( VERSION ).longOpt(
>>> "version"
>>> >>> ).desc( "Display version information" ).build() );
>>> >>> +        options.addOption( Option.builder( QUIET ).longOpt( "quiet"
>>> >>> ).desc( "Quiet output - only show errors" ).build() );
>>> >>> +        options.addOption( Option.builder( DEBUG ).longOpt( "debug"
>>> >>> ).desc( "Produce execution debug output" ).build() );
>>> >>> +        options.addOption( Option.builder( ERRORS ).longOpt(
>>> "errors"
>>> >>> ).desc( "Produce execution error messages" ).build() );
>>> >>> +        options.addOption( Option.builder( NON_RECURSIVE ).longOpt(
>>> >>> "non-recursive" ).desc( "Do not recurse into sub-projects" ).build()
>>> );
>>> >>> +        options.addOption( Option.builder( UPDATE_SNAPSHOTS
>>> ).longOpt(
>>> >>> "update-snapshots" ).desc( "Forces a check for missing releases and
>>> updated
>>> >>> snapshots on remote repositories" ).build() );
>>> >>> +        options.addOption( Option.builder( ACTIVATE_PROFILES
>>> ).longOpt(
>>> >>> "activate-profiles" ).desc( "Comma-delimited list of profiles to
>>> activate"
>>> >>> ).hasArg().build() );
>>> >>> +        options.addOption( Option.builder( BATCH_MODE ).longOpt(
>>> >>> "batch-mode" ).desc( "Run in non-interactive (batch) mode (disables
>>> output
>>> >>> color)" ).build() );
>>> >>> +        options.addOption( Option.builder( SUPRESS_SNAPSHOT_UPDATES
>>> >>> ).longOpt( "no-snapshot-updates" ).desc( "Suppress SNAPSHOT updates"
>>> >>> ).build() );
>>> >>> +        options.addOption( Option.builder( CHECKSUM_FAILURE_POLICY
>>> >>> ).longOpt( "strict-checksums" ).desc( "Fail the build if checksums
>>> don't
>>> >>> match" ).build() );
>>> >>> +        options.addOption( Option.builder( CHECKSUM_WARNING_POLICY
>>> >>> ).longOpt( "lax-checksums" ).desc( "Warn if checksums don't match"
>>> >>> ).build() );
>>> >>> +        options.addOption( Option.builder( ALTERNATE_USER_SETTINGS
>>> >>> ).longOpt( "settings" ).hasArg().desc( "Alternate path for the user
>>> >>> settings file" ).build() );
>>> >>> +        options.addOption( Option.builder( ALTERNATE_GLOBAL_SETTINGS
>>> >>> ).longOpt( "global-settings" ).hasArg().desc( "Alternate path for the
>>> >>> global settings file" ).build() );
>>> >>> +        options.addOption( Option.builder( ALTERNATE_USER_TOOLCHAINS
>>> >>> ).longOpt( "toolchains" ).hasArg().desc( "Alternate path for the user
>>> >>> toolchains file" ).hasArg().build() );
>>> >>> +        options.addOption( Option.builder(
>>> ALTERNATE_GLOBAL_TOOLCHAINS
>>> >>> ).longOpt( "global-toolchains" ).desc( "Alternate path for the global
>>> >>> toolchains file" ).hasArg().build() );
>>> >>> +        options.addOption( Option.builder( FAIL_FAST ).longOpt(
>>> >>> "fail-fast" ).desc( "Stop at first failure in reactorized builds"
>>> ).build()
>>> >>> );
>>> >>> +        options.addOption( Option.builder( FAIL_AT_END ).longOpt(
>>> >>> "fail-at-end" ).desc( "Only fail the build afterwards; allow all
>>> >>> non-impacted builds to continue" ).build() );
>>> >>> +        options.addOption( Option.builder( FAIL_NEVER ).longOpt(
>>> >>> "fail-never" ).desc( "NEVER fail the build, regardless of project
>>> result"
>>> >>> ).build() );
>>> >>> +        options.addOption( Option.builder( RESUME_FROM ).longOpt(
>>> >>> "resume-from" ).hasArg().desc( "Resume reactor from specified
>>> project"
>>> >>> ).build() );
>>> >>> +        options.addOption( Option.builder( PROJECT_LIST ).longOpt(
>>> >>> "projects" ).desc( "Comma-delimited list of specified reactor
>>> projects to
>>> >>> build instead of all projects. A project can be specified by
>>> >>> [groupId]:artifactId or by its relative path." ).hasArg().build() );
>>> >>> +        options.addOption( Option.builder( ALSO_MAKE ).longOpt(
>>> >>> "also-make" ).desc( "If project list is specified, also build
>>> projects
>>> >>> required by the list" ).build() );
>>> >>> +        options.addOption( Option.builder( ALSO_MAKE_DEPENDENTS
>>> >>> ).longOpt( "also-make-dependents" ).desc( "If project list is
>>> specified,
>>> >>> also build projects that depend on projects on the list" ).build() );
>>> >>> +        options.addOption( Option.builder( LOG_FILE ).longOpt(
>>> >>> "log-file" ).hasArg().desc( "Log file where all build output will go"
>>> >>> ).build() );
>>> >>> +        options.addOption( Option.builder( SHOW_VERSION ).longOpt(
>>> >>> "show-version" ).desc( "Display version information WITHOUT stopping
>>> build"
>>> >>> ).build() );
>>> >>> +        options.addOption( Option.builder( ENCRYPT_MASTER_PASSWORD
>>> >>> ).longOpt( "encrypt-master-password" ).optionalArg( true ).desc(
>>> "Encrypt
>>> >>> master security password" ).build() );
>>> >>> +        options.addOption( Option.builder( ENCRYPT_PASSWORD
>>> ).longOpt(
>>> >>> "encrypt-password" ).optionalArg( true ).desc( "Encrypt server
>>> password"
>>> >>> ).build() );
>>> >>> +        options.addOption( Option.builder( THREADS ).longOpt(
>>> "threads"
>>> >>> ).hasArg().desc( "Thread count, for instance 2.0C where C is core
>>> >>> multiplied" ).build() );
>>> >>> +        options.addOption( Option.builder( LEGACY_LOCAL_REPOSITORY
>>> >>> ).longOpt( "legacy-local-repository" ).desc( "Use Maven 2 Legacy
>>> Local
>>> >>> Repository behaviour, ie no use of _remote.repositories. Can also be
>>> >>> activated by using -Dmaven.legacyLocalRepo=true" ).build() );
>>> >>> +        options.addOption( Option.builder( BUILDER ).longOpt(
>>> "builder"
>>> >>> ).hasArg().desc( "The id of the build strategy to use" ).build() );
>>> >>>         // Adding this back in for compatibility with the verifier
>>> that
>>> >>> hard codes this option.
>>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>>> >>> "no-plugin-registry" ).withDescription( "Ineffective, only kept for
>>> >>> backward compatibility" ).create( "npr" ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>>> >>> "check-plugin-updates" ).withDescription( "Ineffective, only kept for
>>> >>> backward compatibility" ).create( "cpu" ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>>> "update-plugins"
>>> >>> ).withDescription( "Ineffective, only kept for backward
>>> compatibility"
>>> >>> ).create( "up" ) );
>>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>>> >>> "no-plugin-updates" ).withDescription( "Ineffective, only kept for
>>> backward
>>> >>> compatibility" ).create( "npu" ) );
>>> >>> +        options.addOption( Option.builder( "npr" ).longOpt(
>>> >>> "no-plugin-registry" ).desc( "Ineffective, only kept for backward
>>> >>> compatibility" ).build() );
>>> >>> +        options.addOption( Option.builder( "cpu" ).longOpt(
>>> >>> "check-plugin-updates" ).desc( "Ineffective, only kept for backward
>>> >>> compatibility" ).build() );
>>> >>> +        options.addOption( Option.builder( "up" ).longOpt(
>>> >>> "update-plugins" ).desc( "Ineffective, only kept for backward
>>> >>> compatibility" ).build() );
>>> >>> +        options.addOption( Option.builder( "npu" ).longOpt(
>>> >>> "no-plugin-updates" ).desc( "Ineffective, only kept for backward
>>> >>> compatibility" ).build() );
>>> >>> +
>>> >>>      }
>>> >>> +    // CHECKSTYLE_ON: LineLength
>>> >>>     public CommandLine parse( String[] args )
>>> >>>          throws ParseException
>>> >>> @@ -154,7 +156,7 @@ public class CLIManager
>>> >>>          // We need to eat any quotes surrounding arguments...
>>> >>>          String[] cleanArgs = CleanArgument.cleanArgs( args );
>>> >>> -        CommandLineParser parser = new GnuParser();
>>> >>> +        CommandLineParser parser = new DefaultParser();
>>> >>>         return parser.parse( options, cleanArgs );
>>> >>>      }
>>> >>>
>>> >>
>>> >> ---------------------------------------------------------------------
>>> >> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
>>> >> For additional commands, e-mail: dev-help@maven.apache.org
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
>>> For additional commands, e-mail: dev-help@maven.apache.org
>>>
>>> --
>> Sent from my phone
>>
>
>

Re: maven git commit: [MNG-6069] Migrate to non deprecated parts of Commons CLI

Posted by Stephen Connolly <st...@gmail.com>.
Tests are failing because system properties are not being parsed correctly
with the new builder based options.

It seems that we get for `-Drevision=1.3.0 -Dmaven.local.repo=/foo/bar`
when on MavenCli line 1676 we get defStrs == { "revision", "1.3.0",
"maven.local.repo", "/foo/bar"}

This results in setting system properties:

revision=true
1.3.0=true
maven.local.repo=true
/foo/bar=true

So there's the reason why the tests are failing. I suspect the switch from
GnuParser is the root cause... not sure what the non deprecated way to fix
it is

On 19 March 2017 at 18:36, Stephen Connolly <stephen.alan.connolly@gmail.com
> wrote:

> If the tests are not working by Monday then it's out on its ear ;-)
>
> On Sun 19 Mar 2017 at 18:11, Karl Heinz Marbaise <kh...@gmx.de>
> wrote:
>
>> Hi,
>>
>> I'm not sure if this for 3.5.0 beta or what ever we call it...at the
>> moment the tests are not working...and I need to dive into it why are
>> failing..it looks there are missing some dependencies..but I'm note sure
>> about it...
>>
>> But it looks you have already decided what to do...
>>
>> Kind regards
>> Karl Heinz Marbaise
>>
>> On 19/03/17 18:53, Stephen Connolly wrote:
>> > Hervé and I were discussing this on IRC... perhaps we can merge this for
>> > 3.5.0-beta-1 and if it causes issues then we can revert for 3.5.0
>> >
>> > As these are public static final String and char constants, it should
>> not
>> > break binary compatibility as javac inlines static final constants... it
>> > may break compile compatibility, but that is OK.
>> >
>> > WDYT? If we have consensus then we'll merge tomorrow before I start the
>> > release
>> >
>> > On 18 March 2017 at 18:12, Robert Scholte <rf...@apache.org> wrote:
>> >
>> >> Are you *really* sure these public static final fields are only used
>> here?
>> >>
>> >>
>> >> On Sat, 18 Mar 2017 18:19:05 +0100, <kh...@apache.org> wrote:
>> >>
>> >> Repository: maven
>> >>> Updated Branches:
>> >>>   refs/heads/MNG-6069 [created] b8efec709
>> >>>
>> >>>
>> >>> [MNG-6069] Migrate to non deprecated parts of Commons CLI
>> >>>
>> >>>
>> >>> Project: http://git-wip-us.apache.org/repos/asf/maven/repo
>> >>> Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/b8efec70
>> >>> Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/b8efec70
>> >>> Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/b8efec70
>> >>>
>> >>> Branch: refs/heads/MNG-6069
>> >>> Commit: b8efec709cce46358da2eaa3d1c288f16ab4c8a8
>> >>> Parents: 55eeb32
>> >>> Author: Karl Heinz Marbaise <kh...@apache.org>
>> >>> Authored: Sat Mar 18 18:18:27 2017 +0100
>> >>> Committer: Karl Heinz Marbaise <kh...@apache.org>
>> >>> Committed: Sat Mar 18 18:18:27 2017 +0100
>> >>>
>> >>> ------------------------------------------------------------
>> ----------
>> >>>  .../java/org/apache/maven/cli/CLIManager.java   | 118
>> >>> ++++++++++---------
>> >>>  1 file changed, 60 insertions(+), 58 deletions(-)
>> >>> ------------------------------------------------------------
>> ----------
>> >>>
>> >>>
>> >>> http://git-wip-us.apache.org/repos/asf/maven/blob/b8efec70/m
>> >>> aven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
>> >>> ------------------------------------------------------------
>> ----------
>> >>> diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/
>> CLIManager.java
>> >>> b/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
>> >>> index a9038bf..20376d9 100644
>> >>> --- a/maven-embedder/src/main/java/org/apache/maven/cli/
>> CLIManager.java
>> >>> +++ b/maven-embedder/src/main/java/org/apache/maven/cli/
>> CLIManager.java
>> >>> @@ -24,9 +24,9 @@ import java.io.PrintWriter;
>> >>> import org.apache.commons.cli.CommandLine;
>> >>>  import org.apache.commons.cli.CommandLineParser;
>> >>> -import org.apache.commons.cli.GnuParser;
>> >>> +import org.apache.commons.cli.DefaultParser;
>> >>>  import org.apache.commons.cli.HelpFormatter;
>> >>> -import org.apache.commons.cli.OptionBuilder;
>> >>> +import org.apache.commons.cli.Option;
>> >>>  import org.apache.commons.cli.Options;
>> >>>  import org.apache.commons.cli.ParseException;
>> >>> @@ -35,43 +35,43 @@ import org.apache.commons.cli.ParseException;
>> >>>   */
>> >>>  public class CLIManager
>> >>>  {
>> >>> -    public static final char ALTERNATE_POM_FILE = 'f';
>> >>> +    public static final String ALTERNATE_POM_FILE = "f";
>> >>> -    public static final char BATCH_MODE = 'B';
>> >>> +    public static final String BATCH_MODE = "B";
>> >>> -    public static final char SET_SYSTEM_PROPERTY = 'D';
>> >>> +    public static final String SET_SYSTEM_PROPERTY = "D";
>> >>> -    public static final char OFFLINE = 'o';
>> >>> +    public static final String OFFLINE = "o";
>> >>> -    public static final char QUIET = 'q';
>> >>> +    public static final String QUIET = "q";
>> >>> -    public static final char DEBUG = 'X';
>> >>> +    public static final String DEBUG = "X";
>> >>> -    public static final char ERRORS = 'e';
>> >>> +    public static final String ERRORS = "e";
>> >>> -    public static final char HELP = 'h';
>> >>> +    public static final String HELP = "h";
>> >>> -    public static final char VERSION = 'v';
>> >>> +    public static final String VERSION = "v";
>> >>> -    public static final char SHOW_VERSION = 'V';
>> >>> +    public static final String SHOW_VERSION = "V";
>> >>> -    public static final char NON_RECURSIVE = 'N';
>> >>> +    public static final String NON_RECURSIVE = "N";
>> >>> -    public static final char UPDATE_SNAPSHOTS = 'U';
>> >>> +    public static final String UPDATE_SNAPSHOTS = "U";
>> >>> -    public static final char ACTIVATE_PROFILES = 'P';
>> >>> +    public static final String ACTIVATE_PROFILES = "P";
>> >>>     public static final String SUPRESS_SNAPSHOT_UPDATES = "nsu";
>> >>> -    public static final char CHECKSUM_FAILURE_POLICY = 'C';
>> >>> +    public static final String CHECKSUM_FAILURE_POLICY = "C";
>> >>> -    public static final char CHECKSUM_WARNING_POLICY = 'c';
>> >>> +    public static final String CHECKSUM_WARNING_POLICY = "c";
>> >>> -    public static final char ALTERNATE_USER_SETTINGS = 's';
>> >>> +    public static final String ALTERNATE_USER_SETTINGS = "s";
>> >>>     public static final String ALTERNATE_GLOBAL_SETTINGS = "gs";
>> >>> -    public static final char ALTERNATE_USER_TOOLCHAINS = 't';
>> >>> +    public static final String ALTERNATE_USER_TOOLCHAINS = "t";
>> >>>     public static final String ALTERNATE_GLOBAL_TOOLCHAINS = "gt";
>> >>> @@ -103,50 +103,52 @@ public class CLIManager
>> >>>     protected Options options;
>> >>> -    @SuppressWarnings( { "static-access", "checkstyle:linelength" } )
>> >>> +    // CHECKSTYLE_OFF: LineLength
>> >>>      public CLIManager()
>> >>>      {
>> >>>          options = new Options();
>> >>> -        options.addOption( OptionBuilder.withLongOpt( "help"
>> >>> ).withDescription( "Display help information" ).create( HELP ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt( "file"
>> >>> ).hasArg().withDescription( "Force the use of an alternate POM file
>> (or
>> >>> directory with pom.xml)" ).create( ALTERNATE_POM_FILE ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt( "define"
>> >>> ).hasArg().withDescription( "Define a system property" ).create(
>> >>> SET_SYSTEM_PROPERTY ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt( "offline"
>> >>> ).withDescription( "Work offline" ).create( OFFLINE ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt( "version"
>> >>> ).withDescription( "Display version information" ).create( VERSION )
>> );
>> >>> -        options.addOption( OptionBuilder.withLongOpt( "quiet"
>> >>> ).withDescription( "Quiet output - only show errors" ).create( QUIET
>> ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt( "debug"
>> >>> ).withDescription( "Produce execution debug output" ).create( DEBUG )
>> );
>> >>> -        options.addOption( OptionBuilder.withLongOpt( "errors"
>> >>> ).withDescription( "Produce execution error messages" ).create(
>> ERRORS ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt( "non-recursive"
>> >>> ).withDescription( "Do not recurse into sub-projects" ).create(
>> >>> NON_RECURSIVE ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>> "update-snapshots"
>> >>> ).withDescription( "Forces a check for missing releases and updated
>> >>> snapshots on remote repositories" ).create( UPDATE_SNAPSHOTS ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>> >>> "activate-profiles" ).withDescription( "Comma-delimited list of
>> profiles to
>> >>> activate" ).hasArg().create( ACTIVATE_PROFILES ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt( "batch-mode"
>> >>> ).withDescription( "Run in non-interactive (batch) mode (disables
>> output
>> >>> color)" ).create( BATCH_MODE ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>> >>> "no-snapshot-updates" ).withDescription( "Suppress SNAPSHOT updates"
>> >>> ).create( SUPRESS_SNAPSHOT_UPDATES ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>> "strict-checksums"
>> >>> ).withDescription( "Fail the build if checksums don't match" ).create(
>> >>> CHECKSUM_FAILURE_POLICY ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt( "lax-checksums"
>> >>> ).withDescription( "Warn if checksums don't match" ).create(
>> >>> CHECKSUM_WARNING_POLICY ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt( "settings"
>> >>> ).withDescription( "Alternate path for the user settings file"
>> >>> ).hasArg().create( ALTERNATE_USER_SETTINGS ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>> "global-settings"
>> >>> ).withDescription( "Alternate path for the global settings file"
>> >>> ).hasArg().create( ALTERNATE_GLOBAL_SETTINGS ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt( "toolchains"
>> >>> ).withDescription( "Alternate path for the user toolchains file"
>> >>> ).hasArg().create( ALTERNATE_USER_TOOLCHAINS ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>> >>> "global-toolchains" ).withDescription( "Alternate path for the global
>> >>> toolchains file" ).hasArg().create( ALTERNATE_GLOBAL_TOOLCHAINS ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt( "fail-fast"
>> >>> ).withDescription( "Stop at first failure in reactorized builds"
>> ).create(
>> >>> FAIL_FAST ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt( "fail-at-end"
>> >>> ).withDescription( "Only fail the build afterwards; allow all
>> non-impacted
>> >>> builds to continue" ).create( FAIL_AT_END ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt( "fail-never"
>> >>> ).withDescription( "NEVER fail the build, regardless of project
>> result"
>> >>> ).create( FAIL_NEVER ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt( "resume-from"
>> >>> ).hasArg().withDescription( "Resume reactor from specified project"
>> >>> ).create( RESUME_FROM ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt( "projects"
>> >>> ).withDescription( "Comma-delimited list of specified reactor
>> projects to
>> >>> build instead of all projects. A project can be specified by
>> >>> [groupId]:artifactId or by its relative path" ).hasArg().create(
>> >>> PROJECT_LIST ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt( "also-make"
>> >>> ).withDescription( "If project list is specified, also build projects
>> >>> required by the list" ).create( ALSO_MAKE ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>> >>> "also-make-dependents" ).withDescription( "If project list is
>> specified,
>> >>> also build projects that depend on projects on the list" ).create(
>> >>> ALSO_MAKE_DEPENDENTS ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt( "log-file"
>> >>> ).hasArg().withDescription( "Log file where all build output will go
>> >>> (disables output color)" ).create( LOG_FILE ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt( "show-version"
>> >>> ).withDescription( "Display version information WITHOUT stopping
>> build"
>> >>> ).create( SHOW_VERSION ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>> >>> "encrypt-master-password" ).hasOptionalArg().withDescription(
>> "Encrypt
>> >>> master security password" ).create( ENCRYPT_MASTER_PASSWORD ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>> "encrypt-password"
>> >>> ).hasOptionalArg().withDescription( "Encrypt server password"
>> ).create(
>> >>> ENCRYPT_PASSWORD ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt( "threads"
>> >>> ).hasArg().withDescription( "Thread count, for instance 2.0C where C
>> is
>> >>> core multiplied" ).create( THREADS ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>> >>> "legacy-local-repository" ).withDescription( "Use Maven 2 Legacy Local
>> >>> Repository behaviour, ie no use of _remote.repositories. Can also be
>> >>> activated by using -Dmaven.legacyLocalRepo=true" ).create(
>> >>> LEGACY_LOCAL_REPOSITORY ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt( "builder"
>> >>> ).hasArg().withDescription( "The id of the build strategy to use"
>> ).create(
>> >>> BUILDER ) );
>> >>> +        options.addOption( Option.builder( HELP ).longOpt( "help"
>> >>> ).desc( "Display help information" ).build() );
>> >>> +        options.addOption( Option.builder( ALTERNATE_POM_FILE
>> ).longOpt(
>> >>> "file" ).hasArg().desc( "Force the use of an alternate POM file (or
>> >>> directory with pom.xml)" ).build() );
>> >>> +        options.addOption( Option.builder( SET_SYSTEM_PROPERTY
>> >>> ).longOpt( "define" ).hasArgs().valueSeparator().desc( "Define a
>> system
>> >>> property" ).build() );
>> >>> +        options.addOption( Option.builder( OFFLINE ).longOpt(
>> "offline"
>> >>> ).desc( "Work offline" ).build() );
>> >>> +        options.addOption( Option.builder( VERSION ).longOpt(
>> "version"
>> >>> ).desc( "Display version information" ).build() );
>> >>> +        options.addOption( Option.builder( QUIET ).longOpt( "quiet"
>> >>> ).desc( "Quiet output - only show errors" ).build() );
>> >>> +        options.addOption( Option.builder( DEBUG ).longOpt( "debug"
>> >>> ).desc( "Produce execution debug output" ).build() );
>> >>> +        options.addOption( Option.builder( ERRORS ).longOpt( "errors"
>> >>> ).desc( "Produce execution error messages" ).build() );
>> >>> +        options.addOption( Option.builder( NON_RECURSIVE ).longOpt(
>> >>> "non-recursive" ).desc( "Do not recurse into sub-projects" ).build()
>> );
>> >>> +        options.addOption( Option.builder( UPDATE_SNAPSHOTS
>> ).longOpt(
>> >>> "update-snapshots" ).desc( "Forces a check for missing releases and
>> updated
>> >>> snapshots on remote repositories" ).build() );
>> >>> +        options.addOption( Option.builder( ACTIVATE_PROFILES
>> ).longOpt(
>> >>> "activate-profiles" ).desc( "Comma-delimited list of profiles to
>> activate"
>> >>> ).hasArg().build() );
>> >>> +        options.addOption( Option.builder( BATCH_MODE ).longOpt(
>> >>> "batch-mode" ).desc( "Run in non-interactive (batch) mode (disables
>> output
>> >>> color)" ).build() );
>> >>> +        options.addOption( Option.builder( SUPRESS_SNAPSHOT_UPDATES
>> >>> ).longOpt( "no-snapshot-updates" ).desc( "Suppress SNAPSHOT updates"
>> >>> ).build() );
>> >>> +        options.addOption( Option.builder( CHECKSUM_FAILURE_POLICY
>> >>> ).longOpt( "strict-checksums" ).desc( "Fail the build if checksums
>> don't
>> >>> match" ).build() );
>> >>> +        options.addOption( Option.builder( CHECKSUM_WARNING_POLICY
>> >>> ).longOpt( "lax-checksums" ).desc( "Warn if checksums don't match"
>> >>> ).build() );
>> >>> +        options.addOption( Option.builder( ALTERNATE_USER_SETTINGS
>> >>> ).longOpt( "settings" ).hasArg().desc( "Alternate path for the user
>> >>> settings file" ).build() );
>> >>> +        options.addOption( Option.builder( ALTERNATE_GLOBAL_SETTINGS
>> >>> ).longOpt( "global-settings" ).hasArg().desc( "Alternate path for the
>> >>> global settings file" ).build() );
>> >>> +        options.addOption( Option.builder( ALTERNATE_USER_TOOLCHAINS
>> >>> ).longOpt( "toolchains" ).hasArg().desc( "Alternate path for the user
>> >>> toolchains file" ).hasArg().build() );
>> >>> +        options.addOption( Option.builder(
>> ALTERNATE_GLOBAL_TOOLCHAINS
>> >>> ).longOpt( "global-toolchains" ).desc( "Alternate path for the global
>> >>> toolchains file" ).hasArg().build() );
>> >>> +        options.addOption( Option.builder( FAIL_FAST ).longOpt(
>> >>> "fail-fast" ).desc( "Stop at first failure in reactorized builds"
>> ).build()
>> >>> );
>> >>> +        options.addOption( Option.builder( FAIL_AT_END ).longOpt(
>> >>> "fail-at-end" ).desc( "Only fail the build afterwards; allow all
>> >>> non-impacted builds to continue" ).build() );
>> >>> +        options.addOption( Option.builder( FAIL_NEVER ).longOpt(
>> >>> "fail-never" ).desc( "NEVER fail the build, regardless of project
>> result"
>> >>> ).build() );
>> >>> +        options.addOption( Option.builder( RESUME_FROM ).longOpt(
>> >>> "resume-from" ).hasArg().desc( "Resume reactor from specified project"
>> >>> ).build() );
>> >>> +        options.addOption( Option.builder( PROJECT_LIST ).longOpt(
>> >>> "projects" ).desc( "Comma-delimited list of specified reactor
>> projects to
>> >>> build instead of all projects. A project can be specified by
>> >>> [groupId]:artifactId or by its relative path." ).hasArg().build() );
>> >>> +        options.addOption( Option.builder( ALSO_MAKE ).longOpt(
>> >>> "also-make" ).desc( "If project list is specified, also build projects
>> >>> required by the list" ).build() );
>> >>> +        options.addOption( Option.builder( ALSO_MAKE_DEPENDENTS
>> >>> ).longOpt( "also-make-dependents" ).desc( "If project list is
>> specified,
>> >>> also build projects that depend on projects on the list" ).build() );
>> >>> +        options.addOption( Option.builder( LOG_FILE ).longOpt(
>> >>> "log-file" ).hasArg().desc( "Log file where all build output will go"
>> >>> ).build() );
>> >>> +        options.addOption( Option.builder( SHOW_VERSION ).longOpt(
>> >>> "show-version" ).desc( "Display version information WITHOUT stopping
>> build"
>> >>> ).build() );
>> >>> +        options.addOption( Option.builder( ENCRYPT_MASTER_PASSWORD
>> >>> ).longOpt( "encrypt-master-password" ).optionalArg( true ).desc(
>> "Encrypt
>> >>> master security password" ).build() );
>> >>> +        options.addOption( Option.builder( ENCRYPT_PASSWORD
>> ).longOpt(
>> >>> "encrypt-password" ).optionalArg( true ).desc( "Encrypt server
>> password"
>> >>> ).build() );
>> >>> +        options.addOption( Option.builder( THREADS ).longOpt(
>> "threads"
>> >>> ).hasArg().desc( "Thread count, for instance 2.0C where C is core
>> >>> multiplied" ).build() );
>> >>> +        options.addOption( Option.builder( LEGACY_LOCAL_REPOSITORY
>> >>> ).longOpt( "legacy-local-repository" ).desc( "Use Maven 2 Legacy Local
>> >>> Repository behaviour, ie no use of _remote.repositories. Can also be
>> >>> activated by using -Dmaven.legacyLocalRepo=true" ).build() );
>> >>> +        options.addOption( Option.builder( BUILDER ).longOpt(
>> "builder"
>> >>> ).hasArg().desc( "The id of the build strategy to use" ).build() );
>> >>>         // Adding this back in for compatibility with the verifier
>> that
>> >>> hard codes this option.
>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>> >>> "no-plugin-registry" ).withDescription( "Ineffective, only kept for
>> >>> backward compatibility" ).create( "npr" ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>> >>> "check-plugin-updates" ).withDescription( "Ineffective, only kept for
>> >>> backward compatibility" ).create( "cpu" ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>> "update-plugins"
>> >>> ).withDescription( "Ineffective, only kept for backward compatibility"
>> >>> ).create( "up" ) );
>> >>> -        options.addOption( OptionBuilder.withLongOpt(
>> >>> "no-plugin-updates" ).withDescription( "Ineffective, only kept for
>> backward
>> >>> compatibility" ).create( "npu" ) );
>> >>> +        options.addOption( Option.builder( "npr" ).longOpt(
>> >>> "no-plugin-registry" ).desc( "Ineffective, only kept for backward
>> >>> compatibility" ).build() );
>> >>> +        options.addOption( Option.builder( "cpu" ).longOpt(
>> >>> "check-plugin-updates" ).desc( "Ineffective, only kept for backward
>> >>> compatibility" ).build() );
>> >>> +        options.addOption( Option.builder( "up" ).longOpt(
>> >>> "update-plugins" ).desc( "Ineffective, only kept for backward
>> >>> compatibility" ).build() );
>> >>> +        options.addOption( Option.builder( "npu" ).longOpt(
>> >>> "no-plugin-updates" ).desc( "Ineffective, only kept for backward
>> >>> compatibility" ).build() );
>> >>> +
>> >>>      }
>> >>> +    // CHECKSTYLE_ON: LineLength
>> >>>     public CommandLine parse( String[] args )
>> >>>          throws ParseException
>> >>> @@ -154,7 +156,7 @@ public class CLIManager
>> >>>          // We need to eat any quotes surrounding arguments...
>> >>>          String[] cleanArgs = CleanArgument.cleanArgs( args );
>> >>> -        CommandLineParser parser = new GnuParser();
>> >>> +        CommandLineParser parser = new DefaultParser();
>> >>>         return parser.parse( options, cleanArgs );
>> >>>      }
>> >>>
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
>> >> For additional commands, e-mail: dev-help@maven.apache.org
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
>> For additional commands, e-mail: dev-help@maven.apache.org
>>
>> --
> Sent from my phone
>

Re: maven git commit: [MNG-6069] Migrate to non deprecated parts of Commons CLI

Posted by Stephen Connolly <st...@gmail.com>.
If the tests are not working by Monday then it's out on its ear ;-)

On Sun 19 Mar 2017 at 18:11, Karl Heinz Marbaise <kh...@gmx.de> wrote:

> Hi,
>
> I'm not sure if this for 3.5.0 beta or what ever we call it...at the
> moment the tests are not working...and I need to dive into it why are
> failing..it looks there are missing some dependencies..but I'm note sure
> about it...
>
> But it looks you have already decided what to do...
>
> Kind regards
> Karl Heinz Marbaise
>
> On 19/03/17 18:53, Stephen Connolly wrote:
> > Hervé and I were discussing this on IRC... perhaps we can merge this for
> > 3.5.0-beta-1 and if it causes issues then we can revert for 3.5.0
> >
> > As these are public static final String and char constants, it should not
> > break binary compatibility as javac inlines static final constants... it
> > may break compile compatibility, but that is OK.
> >
> > WDYT? If we have consensus then we'll merge tomorrow before I start the
> > release
> >
> > On 18 March 2017 at 18:12, Robert Scholte <rf...@apache.org> wrote:
> >
> >> Are you *really* sure these public static final fields are only used
> here?
> >>
> >>
> >> On Sat, 18 Mar 2017 18:19:05 +0100, <kh...@apache.org> wrote:
> >>
> >> Repository: maven
> >>> Updated Branches:
> >>>   refs/heads/MNG-6069 [created] b8efec709
> >>>
> >>>
> >>> [MNG-6069] Migrate to non deprecated parts of Commons CLI
> >>>
> >>>
> >>> Project: http://git-wip-us.apache.org/repos/asf/maven/repo
> >>> Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/b8efec70
> >>> Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/b8efec70
> >>> Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/b8efec70
> >>>
> >>> Branch: refs/heads/MNG-6069
> >>> Commit: b8efec709cce46358da2eaa3d1c288f16ab4c8a8
> >>> Parents: 55eeb32
> >>> Author: Karl Heinz Marbaise <kh...@apache.org>
> >>> Authored: Sat Mar 18 18:18:27 2017 +0100
> >>> Committer: Karl Heinz Marbaise <kh...@apache.org>
> >>> Committed: Sat Mar 18 18:18:27 2017 +0100
> >>>
> >>> ----------------------------------------------------------------------
> >>>  .../java/org/apache/maven/cli/CLIManager.java   | 118
> >>> ++++++++++---------
> >>>  1 file changed, 60 insertions(+), 58 deletions(-)
> >>> ----------------------------------------------------------------------
> >>>
> >>>
> >>> http://git-wip-us.apache.org/repos/asf/maven/blob/b8efec70/m
> >>> aven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
> >>> ----------------------------------------------------------------------
> >>> diff --git
> a/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
> >>> b/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
> >>> index a9038bf..20376d9 100644
> >>> --- a/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
> >>> +++ b/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
> >>> @@ -24,9 +24,9 @@ import java.io.PrintWriter;
> >>> import org.apache.commons.cli.CommandLine;
> >>>  import org.apache.commons.cli.CommandLineParser;
> >>> -import org.apache.commons.cli.GnuParser;
> >>> +import org.apache.commons.cli.DefaultParser;
> >>>  import org.apache.commons.cli.HelpFormatter;
> >>> -import org.apache.commons.cli.OptionBuilder;
> >>> +import org.apache.commons.cli.Option;
> >>>  import org.apache.commons.cli.Options;
> >>>  import org.apache.commons.cli.ParseException;
> >>> @@ -35,43 +35,43 @@ import org.apache.commons.cli.ParseException;
> >>>   */
> >>>  public class CLIManager
> >>>  {
> >>> -    public static final char ALTERNATE_POM_FILE = 'f';
> >>> +    public static final String ALTERNATE_POM_FILE = "f";
> >>> -    public static final char BATCH_MODE = 'B';
> >>> +    public static final String BATCH_MODE = "B";
> >>> -    public static final char SET_SYSTEM_PROPERTY = 'D';
> >>> +    public static final String SET_SYSTEM_PROPERTY = "D";
> >>> -    public static final char OFFLINE = 'o';
> >>> +    public static final String OFFLINE = "o";
> >>> -    public static final char QUIET = 'q';
> >>> +    public static final String QUIET = "q";
> >>> -    public static final char DEBUG = 'X';
> >>> +    public static final String DEBUG = "X";
> >>> -    public static final char ERRORS = 'e';
> >>> +    public static final String ERRORS = "e";
> >>> -    public static final char HELP = 'h';
> >>> +    public static final String HELP = "h";
> >>> -    public static final char VERSION = 'v';
> >>> +    public static final String VERSION = "v";
> >>> -    public static final char SHOW_VERSION = 'V';
> >>> +    public static final String SHOW_VERSION = "V";
> >>> -    public static final char NON_RECURSIVE = 'N';
> >>> +    public static final String NON_RECURSIVE = "N";
> >>> -    public static final char UPDATE_SNAPSHOTS = 'U';
> >>> +    public static final String UPDATE_SNAPSHOTS = "U";
> >>> -    public static final char ACTIVATE_PROFILES = 'P';
> >>> +    public static final String ACTIVATE_PROFILES = "P";
> >>>     public static final String SUPRESS_SNAPSHOT_UPDATES = "nsu";
> >>> -    public static final char CHECKSUM_FAILURE_POLICY = 'C';
> >>> +    public static final String CHECKSUM_FAILURE_POLICY = "C";
> >>> -    public static final char CHECKSUM_WARNING_POLICY = 'c';
> >>> +    public static final String CHECKSUM_WARNING_POLICY = "c";
> >>> -    public static final char ALTERNATE_USER_SETTINGS = 's';
> >>> +    public static final String ALTERNATE_USER_SETTINGS = "s";
> >>>     public static final String ALTERNATE_GLOBAL_SETTINGS = "gs";
> >>> -    public static final char ALTERNATE_USER_TOOLCHAINS = 't';
> >>> +    public static final String ALTERNATE_USER_TOOLCHAINS = "t";
> >>>     public static final String ALTERNATE_GLOBAL_TOOLCHAINS = "gt";
> >>> @@ -103,50 +103,52 @@ public class CLIManager
> >>>     protected Options options;
> >>> -    @SuppressWarnings( { "static-access", "checkstyle:linelength" } )
> >>> +    // CHECKSTYLE_OFF: LineLength
> >>>      public CLIManager()
> >>>      {
> >>>          options = new Options();
> >>> -        options.addOption( OptionBuilder.withLongOpt( "help"
> >>> ).withDescription( "Display help information" ).create( HELP ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt( "file"
> >>> ).hasArg().withDescription( "Force the use of an alternate POM file (or
> >>> directory with pom.xml)" ).create( ALTERNATE_POM_FILE ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt( "define"
> >>> ).hasArg().withDescription( "Define a system property" ).create(
> >>> SET_SYSTEM_PROPERTY ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt( "offline"
> >>> ).withDescription( "Work offline" ).create( OFFLINE ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt( "version"
> >>> ).withDescription( "Display version information" ).create( VERSION ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt( "quiet"
> >>> ).withDescription( "Quiet output - only show errors" ).create( QUIET )
> );
> >>> -        options.addOption( OptionBuilder.withLongOpt( "debug"
> >>> ).withDescription( "Produce execution debug output" ).create( DEBUG )
> );
> >>> -        options.addOption( OptionBuilder.withLongOpt( "errors"
> >>> ).withDescription( "Produce execution error messages" ).create( ERRORS
> ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt( "non-recursive"
> >>> ).withDescription( "Do not recurse into sub-projects" ).create(
> >>> NON_RECURSIVE ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt(
> "update-snapshots"
> >>> ).withDescription( "Forces a check for missing releases and updated
> >>> snapshots on remote repositories" ).create( UPDATE_SNAPSHOTS ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt(
> >>> "activate-profiles" ).withDescription( "Comma-delimited list of
> profiles to
> >>> activate" ).hasArg().create( ACTIVATE_PROFILES ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt( "batch-mode"
> >>> ).withDescription( "Run in non-interactive (batch) mode (disables
> output
> >>> color)" ).create( BATCH_MODE ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt(
> >>> "no-snapshot-updates" ).withDescription( "Suppress SNAPSHOT updates"
> >>> ).create( SUPRESS_SNAPSHOT_UPDATES ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt(
> "strict-checksums"
> >>> ).withDescription( "Fail the build if checksums don't match" ).create(
> >>> CHECKSUM_FAILURE_POLICY ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt( "lax-checksums"
> >>> ).withDescription( "Warn if checksums don't match" ).create(
> >>> CHECKSUM_WARNING_POLICY ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt( "settings"
> >>> ).withDescription( "Alternate path for the user settings file"
> >>> ).hasArg().create( ALTERNATE_USER_SETTINGS ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt(
> "global-settings"
> >>> ).withDescription( "Alternate path for the global settings file"
> >>> ).hasArg().create( ALTERNATE_GLOBAL_SETTINGS ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt( "toolchains"
> >>> ).withDescription( "Alternate path for the user toolchains file"
> >>> ).hasArg().create( ALTERNATE_USER_TOOLCHAINS ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt(
> >>> "global-toolchains" ).withDescription( "Alternate path for the global
> >>> toolchains file" ).hasArg().create( ALTERNATE_GLOBAL_TOOLCHAINS ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt( "fail-fast"
> >>> ).withDescription( "Stop at first failure in reactorized builds"
> ).create(
> >>> FAIL_FAST ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt( "fail-at-end"
> >>> ).withDescription( "Only fail the build afterwards; allow all
> non-impacted
> >>> builds to continue" ).create( FAIL_AT_END ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt( "fail-never"
> >>> ).withDescription( "NEVER fail the build, regardless of project result"
> >>> ).create( FAIL_NEVER ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt( "resume-from"
> >>> ).hasArg().withDescription( "Resume reactor from specified project"
> >>> ).create( RESUME_FROM ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt( "projects"
> >>> ).withDescription( "Comma-delimited list of specified reactor projects
> to
> >>> build instead of all projects. A project can be specified by
> >>> [groupId]:artifactId or by its relative path" ).hasArg().create(
> >>> PROJECT_LIST ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt( "also-make"
> >>> ).withDescription( "If project list is specified, also build projects
> >>> required by the list" ).create( ALSO_MAKE ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt(
> >>> "also-make-dependents" ).withDescription( "If project list is
> specified,
> >>> also build projects that depend on projects on the list" ).create(
> >>> ALSO_MAKE_DEPENDENTS ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt( "log-file"
> >>> ).hasArg().withDescription( "Log file where all build output will go
> >>> (disables output color)" ).create( LOG_FILE ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt( "show-version"
> >>> ).withDescription( "Display version information WITHOUT stopping build"
> >>> ).create( SHOW_VERSION ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt(
> >>> "encrypt-master-password" ).hasOptionalArg().withDescription( "Encrypt
> >>> master security password" ).create( ENCRYPT_MASTER_PASSWORD ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt(
> "encrypt-password"
> >>> ).hasOptionalArg().withDescription( "Encrypt server password" ).create(
> >>> ENCRYPT_PASSWORD ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt( "threads"
> >>> ).hasArg().withDescription( "Thread count, for instance 2.0C where C is
> >>> core multiplied" ).create( THREADS ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt(
> >>> "legacy-local-repository" ).withDescription( "Use Maven 2 Legacy Local
> >>> Repository behaviour, ie no use of _remote.repositories. Can also be
> >>> activated by using -Dmaven.legacyLocalRepo=true" ).create(
> >>> LEGACY_LOCAL_REPOSITORY ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt( "builder"
> >>> ).hasArg().withDescription( "The id of the build strategy to use"
> ).create(
> >>> BUILDER ) );
> >>> +        options.addOption( Option.builder( HELP ).longOpt( "help"
> >>> ).desc( "Display help information" ).build() );
> >>> +        options.addOption( Option.builder( ALTERNATE_POM_FILE
> ).longOpt(
> >>> "file" ).hasArg().desc( "Force the use of an alternate POM file (or
> >>> directory with pom.xml)" ).build() );
> >>> +        options.addOption( Option.builder( SET_SYSTEM_PROPERTY
> >>> ).longOpt( "define" ).hasArgs().valueSeparator().desc( "Define a system
> >>> property" ).build() );
> >>> +        options.addOption( Option.builder( OFFLINE ).longOpt(
> "offline"
> >>> ).desc( "Work offline" ).build() );
> >>> +        options.addOption( Option.builder( VERSION ).longOpt(
> "version"
> >>> ).desc( "Display version information" ).build() );
> >>> +        options.addOption( Option.builder( QUIET ).longOpt( "quiet"
> >>> ).desc( "Quiet output - only show errors" ).build() );
> >>> +        options.addOption( Option.builder( DEBUG ).longOpt( "debug"
> >>> ).desc( "Produce execution debug output" ).build() );
> >>> +        options.addOption( Option.builder( ERRORS ).longOpt( "errors"
> >>> ).desc( "Produce execution error messages" ).build() );
> >>> +        options.addOption( Option.builder( NON_RECURSIVE ).longOpt(
> >>> "non-recursive" ).desc( "Do not recurse into sub-projects" ).build() );
> >>> +        options.addOption( Option.builder( UPDATE_SNAPSHOTS ).longOpt(
> >>> "update-snapshots" ).desc( "Forces a check for missing releases and
> updated
> >>> snapshots on remote repositories" ).build() );
> >>> +        options.addOption( Option.builder( ACTIVATE_PROFILES
> ).longOpt(
> >>> "activate-profiles" ).desc( "Comma-delimited list of profiles to
> activate"
> >>> ).hasArg().build() );
> >>> +        options.addOption( Option.builder( BATCH_MODE ).longOpt(
> >>> "batch-mode" ).desc( "Run in non-interactive (batch) mode (disables
> output
> >>> color)" ).build() );
> >>> +        options.addOption( Option.builder( SUPRESS_SNAPSHOT_UPDATES
> >>> ).longOpt( "no-snapshot-updates" ).desc( "Suppress SNAPSHOT updates"
> >>> ).build() );
> >>> +        options.addOption( Option.builder( CHECKSUM_FAILURE_POLICY
> >>> ).longOpt( "strict-checksums" ).desc( "Fail the build if checksums
> don't
> >>> match" ).build() );
> >>> +        options.addOption( Option.builder( CHECKSUM_WARNING_POLICY
> >>> ).longOpt( "lax-checksums" ).desc( "Warn if checksums don't match"
> >>> ).build() );
> >>> +        options.addOption( Option.builder( ALTERNATE_USER_SETTINGS
> >>> ).longOpt( "settings" ).hasArg().desc( "Alternate path for the user
> >>> settings file" ).build() );
> >>> +        options.addOption( Option.builder( ALTERNATE_GLOBAL_SETTINGS
> >>> ).longOpt( "global-settings" ).hasArg().desc( "Alternate path for the
> >>> global settings file" ).build() );
> >>> +        options.addOption( Option.builder( ALTERNATE_USER_TOOLCHAINS
> >>> ).longOpt( "toolchains" ).hasArg().desc( "Alternate path for the user
> >>> toolchains file" ).hasArg().build() );
> >>> +        options.addOption( Option.builder( ALTERNATE_GLOBAL_TOOLCHAINS
> >>> ).longOpt( "global-toolchains" ).desc( "Alternate path for the global
> >>> toolchains file" ).hasArg().build() );
> >>> +        options.addOption( Option.builder( FAIL_FAST ).longOpt(
> >>> "fail-fast" ).desc( "Stop at first failure in reactorized builds"
> ).build()
> >>> );
> >>> +        options.addOption( Option.builder( FAIL_AT_END ).longOpt(
> >>> "fail-at-end" ).desc( "Only fail the build afterwards; allow all
> >>> non-impacted builds to continue" ).build() );
> >>> +        options.addOption( Option.builder( FAIL_NEVER ).longOpt(
> >>> "fail-never" ).desc( "NEVER fail the build, regardless of project
> result"
> >>> ).build() );
> >>> +        options.addOption( Option.builder( RESUME_FROM ).longOpt(
> >>> "resume-from" ).hasArg().desc( "Resume reactor from specified project"
> >>> ).build() );
> >>> +        options.addOption( Option.builder( PROJECT_LIST ).longOpt(
> >>> "projects" ).desc( "Comma-delimited list of specified reactor projects
> to
> >>> build instead of all projects. A project can be specified by
> >>> [groupId]:artifactId or by its relative path." ).hasArg().build() );
> >>> +        options.addOption( Option.builder( ALSO_MAKE ).longOpt(
> >>> "also-make" ).desc( "If project list is specified, also build projects
> >>> required by the list" ).build() );
> >>> +        options.addOption( Option.builder( ALSO_MAKE_DEPENDENTS
> >>> ).longOpt( "also-make-dependents" ).desc( "If project list is
> specified,
> >>> also build projects that depend on projects on the list" ).build() );
> >>> +        options.addOption( Option.builder( LOG_FILE ).longOpt(
> >>> "log-file" ).hasArg().desc( "Log file where all build output will go"
> >>> ).build() );
> >>> +        options.addOption( Option.builder( SHOW_VERSION ).longOpt(
> >>> "show-version" ).desc( "Display version information WITHOUT stopping
> build"
> >>> ).build() );
> >>> +        options.addOption( Option.builder( ENCRYPT_MASTER_PASSWORD
> >>> ).longOpt( "encrypt-master-password" ).optionalArg( true ).desc(
> "Encrypt
> >>> master security password" ).build() );
> >>> +        options.addOption( Option.builder( ENCRYPT_PASSWORD ).longOpt(
> >>> "encrypt-password" ).optionalArg( true ).desc( "Encrypt server
> password"
> >>> ).build() );
> >>> +        options.addOption( Option.builder( THREADS ).longOpt(
> "threads"
> >>> ).hasArg().desc( "Thread count, for instance 2.0C where C is core
> >>> multiplied" ).build() );
> >>> +        options.addOption( Option.builder( LEGACY_LOCAL_REPOSITORY
> >>> ).longOpt( "legacy-local-repository" ).desc( "Use Maven 2 Legacy Local
> >>> Repository behaviour, ie no use of _remote.repositories. Can also be
> >>> activated by using -Dmaven.legacyLocalRepo=true" ).build() );
> >>> +        options.addOption( Option.builder( BUILDER ).longOpt(
> "builder"
> >>> ).hasArg().desc( "The id of the build strategy to use" ).build() );
> >>>         // Adding this back in for compatibility with the verifier that
> >>> hard codes this option.
> >>> -        options.addOption( OptionBuilder.withLongOpt(
> >>> "no-plugin-registry" ).withDescription( "Ineffective, only kept for
> >>> backward compatibility" ).create( "npr" ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt(
> >>> "check-plugin-updates" ).withDescription( "Ineffective, only kept for
> >>> backward compatibility" ).create( "cpu" ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt( "update-plugins"
> >>> ).withDescription( "Ineffective, only kept for backward compatibility"
> >>> ).create( "up" ) );
> >>> -        options.addOption( OptionBuilder.withLongOpt(
> >>> "no-plugin-updates" ).withDescription( "Ineffective, only kept for
> backward
> >>> compatibility" ).create( "npu" ) );
> >>> +        options.addOption( Option.builder( "npr" ).longOpt(
> >>> "no-plugin-registry" ).desc( "Ineffective, only kept for backward
> >>> compatibility" ).build() );
> >>> +        options.addOption( Option.builder( "cpu" ).longOpt(
> >>> "check-plugin-updates" ).desc( "Ineffective, only kept for backward
> >>> compatibility" ).build() );
> >>> +        options.addOption( Option.builder( "up" ).longOpt(
> >>> "update-plugins" ).desc( "Ineffective, only kept for backward
> >>> compatibility" ).build() );
> >>> +        options.addOption( Option.builder( "npu" ).longOpt(
> >>> "no-plugin-updates" ).desc( "Ineffective, only kept for backward
> >>> compatibility" ).build() );
> >>> +
> >>>      }
> >>> +    // CHECKSTYLE_ON: LineLength
> >>>     public CommandLine parse( String[] args )
> >>>          throws ParseException
> >>> @@ -154,7 +156,7 @@ public class CLIManager
> >>>          // We need to eat any quotes surrounding arguments...
> >>>          String[] cleanArgs = CleanArgument.cleanArgs( args );
> >>> -        CommandLineParser parser = new GnuParser();
> >>> +        CommandLineParser parser = new DefaultParser();
> >>>         return parser.parse( options, cleanArgs );
> >>>      }
> >>>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> >> For additional commands, e-mail: dev-help@maven.apache.org
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
>
> --
Sent from my phone

Re: maven git commit: [MNG-6069] Migrate to non deprecated parts of Commons CLI

Posted by Karl Heinz Marbaise <kh...@gmx.de>.
Hi,

I'm not sure if this for 3.5.0 beta or what ever we call it...at the 
moment the tests are not working...and I need to dive into it why are 
failing..it looks there are missing some dependencies..but I'm note sure 
about it...

But it looks you have already decided what to do...

Kind regards
Karl Heinz Marbaise

On 19/03/17 18:53, Stephen Connolly wrote:
> Herv� and I were discussing this on IRC... perhaps we can merge this for
> 3.5.0-beta-1 and if it causes issues then we can revert for 3.5.0
>
> As these are public static final String and char constants, it should not
> break binary compatibility as javac inlines static final constants... it
> may break compile compatibility, but that is OK.
>
> WDYT? If we have consensus then we'll merge tomorrow before I start the
> release
>
> On 18 March 2017 at 18:12, Robert Scholte <rf...@apache.org> wrote:
>
>> Are you *really* sure these public static final fields are only used here?
>>
>>
>> On Sat, 18 Mar 2017 18:19:05 +0100, <kh...@apache.org> wrote:
>>
>> Repository: maven
>>> Updated Branches:
>>>   refs/heads/MNG-6069 [created] b8efec709
>>>
>>>
>>> [MNG-6069] Migrate to non deprecated parts of Commons CLI
>>>
>>>
>>> Project: http://git-wip-us.apache.org/repos/asf/maven/repo
>>> Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/b8efec70
>>> Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/b8efec70
>>> Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/b8efec70
>>>
>>> Branch: refs/heads/MNG-6069
>>> Commit: b8efec709cce46358da2eaa3d1c288f16ab4c8a8
>>> Parents: 55eeb32
>>> Author: Karl Heinz Marbaise <kh...@apache.org>
>>> Authored: Sat Mar 18 18:18:27 2017 +0100
>>> Committer: Karl Heinz Marbaise <kh...@apache.org>
>>> Committed: Sat Mar 18 18:18:27 2017 +0100
>>>
>>> ----------------------------------------------------------------------
>>>  .../java/org/apache/maven/cli/CLIManager.java   | 118
>>> ++++++++++---------
>>>  1 file changed, 60 insertions(+), 58 deletions(-)
>>> ----------------------------------------------------------------------
>>>
>>>
>>> http://git-wip-us.apache.org/repos/asf/maven/blob/b8efec70/m
>>> aven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
>>> ----------------------------------------------------------------------
>>> diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
>>> b/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
>>> index a9038bf..20376d9 100644
>>> --- a/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
>>> +++ b/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
>>> @@ -24,9 +24,9 @@ import java.io.PrintWriter;
>>> import org.apache.commons.cli.CommandLine;
>>>  import org.apache.commons.cli.CommandLineParser;
>>> -import org.apache.commons.cli.GnuParser;
>>> +import org.apache.commons.cli.DefaultParser;
>>>  import org.apache.commons.cli.HelpFormatter;
>>> -import org.apache.commons.cli.OptionBuilder;
>>> +import org.apache.commons.cli.Option;
>>>  import org.apache.commons.cli.Options;
>>>  import org.apache.commons.cli.ParseException;
>>> @@ -35,43 +35,43 @@ import org.apache.commons.cli.ParseException;
>>>   */
>>>  public class CLIManager
>>>  {
>>> -    public static final char ALTERNATE_POM_FILE = 'f';
>>> +    public static final String ALTERNATE_POM_FILE = "f";
>>> -    public static final char BATCH_MODE = 'B';
>>> +    public static final String BATCH_MODE = "B";
>>> -    public static final char SET_SYSTEM_PROPERTY = 'D';
>>> +    public static final String SET_SYSTEM_PROPERTY = "D";
>>> -    public static final char OFFLINE = 'o';
>>> +    public static final String OFFLINE = "o";
>>> -    public static final char QUIET = 'q';
>>> +    public static final String QUIET = "q";
>>> -    public static final char DEBUG = 'X';
>>> +    public static final String DEBUG = "X";
>>> -    public static final char ERRORS = 'e';
>>> +    public static final String ERRORS = "e";
>>> -    public static final char HELP = 'h';
>>> +    public static final String HELP = "h";
>>> -    public static final char VERSION = 'v';
>>> +    public static final String VERSION = "v";
>>> -    public static final char SHOW_VERSION = 'V';
>>> +    public static final String SHOW_VERSION = "V";
>>> -    public static final char NON_RECURSIVE = 'N';
>>> +    public static final String NON_RECURSIVE = "N";
>>> -    public static final char UPDATE_SNAPSHOTS = 'U';
>>> +    public static final String UPDATE_SNAPSHOTS = "U";
>>> -    public static final char ACTIVATE_PROFILES = 'P';
>>> +    public static final String ACTIVATE_PROFILES = "P";
>>>     public static final String SUPRESS_SNAPSHOT_UPDATES = "nsu";
>>> -    public static final char CHECKSUM_FAILURE_POLICY = 'C';
>>> +    public static final String CHECKSUM_FAILURE_POLICY = "C";
>>> -    public static final char CHECKSUM_WARNING_POLICY = 'c';
>>> +    public static final String CHECKSUM_WARNING_POLICY = "c";
>>> -    public static final char ALTERNATE_USER_SETTINGS = 's';
>>> +    public static final String ALTERNATE_USER_SETTINGS = "s";
>>>     public static final String ALTERNATE_GLOBAL_SETTINGS = "gs";
>>> -    public static final char ALTERNATE_USER_TOOLCHAINS = 't';
>>> +    public static final String ALTERNATE_USER_TOOLCHAINS = "t";
>>>     public static final String ALTERNATE_GLOBAL_TOOLCHAINS = "gt";
>>> @@ -103,50 +103,52 @@ public class CLIManager
>>>     protected Options options;
>>> -    @SuppressWarnings( { "static-access", "checkstyle:linelength" } )
>>> +    // CHECKSTYLE_OFF: LineLength
>>>      public CLIManager()
>>>      {
>>>          options = new Options();
>>> -        options.addOption( OptionBuilder.withLongOpt( "help"
>>> ).withDescription( "Display help information" ).create( HELP ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "file"
>>> ).hasArg().withDescription( "Force the use of an alternate POM file (or
>>> directory with pom.xml)" ).create( ALTERNATE_POM_FILE ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "define"
>>> ).hasArg().withDescription( "Define a system property" ).create(
>>> SET_SYSTEM_PROPERTY ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "offline"
>>> ).withDescription( "Work offline" ).create( OFFLINE ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "version"
>>> ).withDescription( "Display version information" ).create( VERSION ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "quiet"
>>> ).withDescription( "Quiet output - only show errors" ).create( QUIET ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "debug"
>>> ).withDescription( "Produce execution debug output" ).create( DEBUG ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "errors"
>>> ).withDescription( "Produce execution error messages" ).create( ERRORS ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "non-recursive"
>>> ).withDescription( "Do not recurse into sub-projects" ).create(
>>> NON_RECURSIVE ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "update-snapshots"
>>> ).withDescription( "Forces a check for missing releases and updated
>>> snapshots on remote repositories" ).create( UPDATE_SNAPSHOTS ) );
>>> -        options.addOption( OptionBuilder.withLongOpt(
>>> "activate-profiles" ).withDescription( "Comma-delimited list of profiles to
>>> activate" ).hasArg().create( ACTIVATE_PROFILES ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "batch-mode"
>>> ).withDescription( "Run in non-interactive (batch) mode (disables output
>>> color)" ).create( BATCH_MODE ) );
>>> -        options.addOption( OptionBuilder.withLongOpt(
>>> "no-snapshot-updates" ).withDescription( "Suppress SNAPSHOT updates"
>>> ).create( SUPRESS_SNAPSHOT_UPDATES ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "strict-checksums"
>>> ).withDescription( "Fail the build if checksums don't match" ).create(
>>> CHECKSUM_FAILURE_POLICY ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "lax-checksums"
>>> ).withDescription( "Warn if checksums don't match" ).create(
>>> CHECKSUM_WARNING_POLICY ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "settings"
>>> ).withDescription( "Alternate path for the user settings file"
>>> ).hasArg().create( ALTERNATE_USER_SETTINGS ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "global-settings"
>>> ).withDescription( "Alternate path for the global settings file"
>>> ).hasArg().create( ALTERNATE_GLOBAL_SETTINGS ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "toolchains"
>>> ).withDescription( "Alternate path for the user toolchains file"
>>> ).hasArg().create( ALTERNATE_USER_TOOLCHAINS ) );
>>> -        options.addOption( OptionBuilder.withLongOpt(
>>> "global-toolchains" ).withDescription( "Alternate path for the global
>>> toolchains file" ).hasArg().create( ALTERNATE_GLOBAL_TOOLCHAINS ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "fail-fast"
>>> ).withDescription( "Stop at first failure in reactorized builds" ).create(
>>> FAIL_FAST ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "fail-at-end"
>>> ).withDescription( "Only fail the build afterwards; allow all non-impacted
>>> builds to continue" ).create( FAIL_AT_END ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "fail-never"
>>> ).withDescription( "NEVER fail the build, regardless of project result"
>>> ).create( FAIL_NEVER ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "resume-from"
>>> ).hasArg().withDescription( "Resume reactor from specified project"
>>> ).create( RESUME_FROM ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "projects"
>>> ).withDescription( "Comma-delimited list of specified reactor projects to
>>> build instead of all projects. A project can be specified by
>>> [groupId]:artifactId or by its relative path" ).hasArg().create(
>>> PROJECT_LIST ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "also-make"
>>> ).withDescription( "If project list is specified, also build projects
>>> required by the list" ).create( ALSO_MAKE ) );
>>> -        options.addOption( OptionBuilder.withLongOpt(
>>> "also-make-dependents" ).withDescription( "If project list is specified,
>>> also build projects that depend on projects on the list" ).create(
>>> ALSO_MAKE_DEPENDENTS ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "log-file"
>>> ).hasArg().withDescription( "Log file where all build output will go
>>> (disables output color)" ).create( LOG_FILE ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "show-version"
>>> ).withDescription( "Display version information WITHOUT stopping build"
>>> ).create( SHOW_VERSION ) );
>>> -        options.addOption( OptionBuilder.withLongOpt(
>>> "encrypt-master-password" ).hasOptionalArg().withDescription( "Encrypt
>>> master security password" ).create( ENCRYPT_MASTER_PASSWORD ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "encrypt-password"
>>> ).hasOptionalArg().withDescription( "Encrypt server password" ).create(
>>> ENCRYPT_PASSWORD ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "threads"
>>> ).hasArg().withDescription( "Thread count, for instance 2.0C where C is
>>> core multiplied" ).create( THREADS ) );
>>> -        options.addOption( OptionBuilder.withLongOpt(
>>> "legacy-local-repository" ).withDescription( "Use Maven 2 Legacy Local
>>> Repository behaviour, ie no use of _remote.repositories. Can also be
>>> activated by using -Dmaven.legacyLocalRepo=true" ).create(
>>> LEGACY_LOCAL_REPOSITORY ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "builder"
>>> ).hasArg().withDescription( "The id of the build strategy to use" ).create(
>>> BUILDER ) );
>>> +        options.addOption( Option.builder( HELP ).longOpt( "help"
>>> ).desc( "Display help information" ).build() );
>>> +        options.addOption( Option.builder( ALTERNATE_POM_FILE ).longOpt(
>>> "file" ).hasArg().desc( "Force the use of an alternate POM file (or
>>> directory with pom.xml)" ).build() );
>>> +        options.addOption( Option.builder( SET_SYSTEM_PROPERTY
>>> ).longOpt( "define" ).hasArgs().valueSeparator().desc( "Define a system
>>> property" ).build() );
>>> +        options.addOption( Option.builder( OFFLINE ).longOpt( "offline"
>>> ).desc( "Work offline" ).build() );
>>> +        options.addOption( Option.builder( VERSION ).longOpt( "version"
>>> ).desc( "Display version information" ).build() );
>>> +        options.addOption( Option.builder( QUIET ).longOpt( "quiet"
>>> ).desc( "Quiet output - only show errors" ).build() );
>>> +        options.addOption( Option.builder( DEBUG ).longOpt( "debug"
>>> ).desc( "Produce execution debug output" ).build() );
>>> +        options.addOption( Option.builder( ERRORS ).longOpt( "errors"
>>> ).desc( "Produce execution error messages" ).build() );
>>> +        options.addOption( Option.builder( NON_RECURSIVE ).longOpt(
>>> "non-recursive" ).desc( "Do not recurse into sub-projects" ).build() );
>>> +        options.addOption( Option.builder( UPDATE_SNAPSHOTS ).longOpt(
>>> "update-snapshots" ).desc( "Forces a check for missing releases and updated
>>> snapshots on remote repositories" ).build() );
>>> +        options.addOption( Option.builder( ACTIVATE_PROFILES ).longOpt(
>>> "activate-profiles" ).desc( "Comma-delimited list of profiles to activate"
>>> ).hasArg().build() );
>>> +        options.addOption( Option.builder( BATCH_MODE ).longOpt(
>>> "batch-mode" ).desc( "Run in non-interactive (batch) mode (disables output
>>> color)" ).build() );
>>> +        options.addOption( Option.builder( SUPRESS_SNAPSHOT_UPDATES
>>> ).longOpt( "no-snapshot-updates" ).desc( "Suppress SNAPSHOT updates"
>>> ).build() );
>>> +        options.addOption( Option.builder( CHECKSUM_FAILURE_POLICY
>>> ).longOpt( "strict-checksums" ).desc( "Fail the build if checksums don't
>>> match" ).build() );
>>> +        options.addOption( Option.builder( CHECKSUM_WARNING_POLICY
>>> ).longOpt( "lax-checksums" ).desc( "Warn if checksums don't match"
>>> ).build() );
>>> +        options.addOption( Option.builder( ALTERNATE_USER_SETTINGS
>>> ).longOpt( "settings" ).hasArg().desc( "Alternate path for the user
>>> settings file" ).build() );
>>> +        options.addOption( Option.builder( ALTERNATE_GLOBAL_SETTINGS
>>> ).longOpt( "global-settings" ).hasArg().desc( "Alternate path for the
>>> global settings file" ).build() );
>>> +        options.addOption( Option.builder( ALTERNATE_USER_TOOLCHAINS
>>> ).longOpt( "toolchains" ).hasArg().desc( "Alternate path for the user
>>> toolchains file" ).hasArg().build() );
>>> +        options.addOption( Option.builder( ALTERNATE_GLOBAL_TOOLCHAINS
>>> ).longOpt( "global-toolchains" ).desc( "Alternate path for the global
>>> toolchains file" ).hasArg().build() );
>>> +        options.addOption( Option.builder( FAIL_FAST ).longOpt(
>>> "fail-fast" ).desc( "Stop at first failure in reactorized builds" ).build()
>>> );
>>> +        options.addOption( Option.builder( FAIL_AT_END ).longOpt(
>>> "fail-at-end" ).desc( "Only fail the build afterwards; allow all
>>> non-impacted builds to continue" ).build() );
>>> +        options.addOption( Option.builder( FAIL_NEVER ).longOpt(
>>> "fail-never" ).desc( "NEVER fail the build, regardless of project result"
>>> ).build() );
>>> +        options.addOption( Option.builder( RESUME_FROM ).longOpt(
>>> "resume-from" ).hasArg().desc( "Resume reactor from specified project"
>>> ).build() );
>>> +        options.addOption( Option.builder( PROJECT_LIST ).longOpt(
>>> "projects" ).desc( "Comma-delimited list of specified reactor projects to
>>> build instead of all projects. A project can be specified by
>>> [groupId]:artifactId or by its relative path." ).hasArg().build() );
>>> +        options.addOption( Option.builder( ALSO_MAKE ).longOpt(
>>> "also-make" ).desc( "If project list is specified, also build projects
>>> required by the list" ).build() );
>>> +        options.addOption( Option.builder( ALSO_MAKE_DEPENDENTS
>>> ).longOpt( "also-make-dependents" ).desc( "If project list is specified,
>>> also build projects that depend on projects on the list" ).build() );
>>> +        options.addOption( Option.builder( LOG_FILE ).longOpt(
>>> "log-file" ).hasArg().desc( "Log file where all build output will go"
>>> ).build() );
>>> +        options.addOption( Option.builder( SHOW_VERSION ).longOpt(
>>> "show-version" ).desc( "Display version information WITHOUT stopping build"
>>> ).build() );
>>> +        options.addOption( Option.builder( ENCRYPT_MASTER_PASSWORD
>>> ).longOpt( "encrypt-master-password" ).optionalArg( true ).desc( "Encrypt
>>> master security password" ).build() );
>>> +        options.addOption( Option.builder( ENCRYPT_PASSWORD ).longOpt(
>>> "encrypt-password" ).optionalArg( true ).desc( "Encrypt server password"
>>> ).build() );
>>> +        options.addOption( Option.builder( THREADS ).longOpt( "threads"
>>> ).hasArg().desc( "Thread count, for instance 2.0C where C is core
>>> multiplied" ).build() );
>>> +        options.addOption( Option.builder( LEGACY_LOCAL_REPOSITORY
>>> ).longOpt( "legacy-local-repository" ).desc( "Use Maven 2 Legacy Local
>>> Repository behaviour, ie no use of _remote.repositories. Can also be
>>> activated by using -Dmaven.legacyLocalRepo=true" ).build() );
>>> +        options.addOption( Option.builder( BUILDER ).longOpt( "builder"
>>> ).hasArg().desc( "The id of the build strategy to use" ).build() );
>>>         // Adding this back in for compatibility with the verifier that
>>> hard codes this option.
>>> -        options.addOption( OptionBuilder.withLongOpt(
>>> "no-plugin-registry" ).withDescription( "Ineffective, only kept for
>>> backward compatibility" ).create( "npr" ) );
>>> -        options.addOption( OptionBuilder.withLongOpt(
>>> "check-plugin-updates" ).withDescription( "Ineffective, only kept for
>>> backward compatibility" ).create( "cpu" ) );
>>> -        options.addOption( OptionBuilder.withLongOpt( "update-plugins"
>>> ).withDescription( "Ineffective, only kept for backward compatibility"
>>> ).create( "up" ) );
>>> -        options.addOption( OptionBuilder.withLongOpt(
>>> "no-plugin-updates" ).withDescription( "Ineffective, only kept for backward
>>> compatibility" ).create( "npu" ) );
>>> +        options.addOption( Option.builder( "npr" ).longOpt(
>>> "no-plugin-registry" ).desc( "Ineffective, only kept for backward
>>> compatibility" ).build() );
>>> +        options.addOption( Option.builder( "cpu" ).longOpt(
>>> "check-plugin-updates" ).desc( "Ineffective, only kept for backward
>>> compatibility" ).build() );
>>> +        options.addOption( Option.builder( "up" ).longOpt(
>>> "update-plugins" ).desc( "Ineffective, only kept for backward
>>> compatibility" ).build() );
>>> +        options.addOption( Option.builder( "npu" ).longOpt(
>>> "no-plugin-updates" ).desc( "Ineffective, only kept for backward
>>> compatibility" ).build() );
>>> +
>>>      }
>>> +    // CHECKSTYLE_ON: LineLength
>>>     public CommandLine parse( String[] args )
>>>          throws ParseException
>>> @@ -154,7 +156,7 @@ public class CLIManager
>>>          // We need to eat any quotes surrounding arguments...
>>>          String[] cleanArgs = CleanArgument.cleanArgs( args );
>>> -        CommandLineParser parser = new GnuParser();
>>> +        CommandLineParser parser = new DefaultParser();
>>>         return parser.parse( options, cleanArgs );
>>>      }
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
>> For additional commands, e-mail: dev-help@maven.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org


Re: maven git commit: [MNG-6069] Migrate to non deprecated parts of Commons CLI

Posted by Stephen Connolly <st...@gmail.com>.
Hervé and I were discussing this on IRC... perhaps we can merge this for
3.5.0-beta-1 and if it causes issues then we can revert for 3.5.0

As these are public static final String and char constants, it should not
break binary compatibility as javac inlines static final constants... it
may break compile compatibility, but that is OK.

WDYT? If we have consensus then we'll merge tomorrow before I start the
release

On 18 March 2017 at 18:12, Robert Scholte <rf...@apache.org> wrote:

> Are you *really* sure these public static final fields are only used here?
>
>
> On Sat, 18 Mar 2017 18:19:05 +0100, <kh...@apache.org> wrote:
>
> Repository: maven
>> Updated Branches:
>>   refs/heads/MNG-6069 [created] b8efec709
>>
>>
>> [MNG-6069] Migrate to non deprecated parts of Commons CLI
>>
>>
>> Project: http://git-wip-us.apache.org/repos/asf/maven/repo
>> Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/b8efec70
>> Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/b8efec70
>> Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/b8efec70
>>
>> Branch: refs/heads/MNG-6069
>> Commit: b8efec709cce46358da2eaa3d1c288f16ab4c8a8
>> Parents: 55eeb32
>> Author: Karl Heinz Marbaise <kh...@apache.org>
>> Authored: Sat Mar 18 18:18:27 2017 +0100
>> Committer: Karl Heinz Marbaise <kh...@apache.org>
>> Committed: Sat Mar 18 18:18:27 2017 +0100
>>
>> ----------------------------------------------------------------------
>>  .../java/org/apache/maven/cli/CLIManager.java   | 118
>> ++++++++++---------
>>  1 file changed, 60 insertions(+), 58 deletions(-)
>> ----------------------------------------------------------------------
>>
>>
>> http://git-wip-us.apache.org/repos/asf/maven/blob/b8efec70/m
>> aven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
>> ----------------------------------------------------------------------
>> diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
>> b/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
>> index a9038bf..20376d9 100644
>> --- a/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
>> +++ b/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
>> @@ -24,9 +24,9 @@ import java.io.PrintWriter;
>> import org.apache.commons.cli.CommandLine;
>>  import org.apache.commons.cli.CommandLineParser;
>> -import org.apache.commons.cli.GnuParser;
>> +import org.apache.commons.cli.DefaultParser;
>>  import org.apache.commons.cli.HelpFormatter;
>> -import org.apache.commons.cli.OptionBuilder;
>> +import org.apache.commons.cli.Option;
>>  import org.apache.commons.cli.Options;
>>  import org.apache.commons.cli.ParseException;
>> @@ -35,43 +35,43 @@ import org.apache.commons.cli.ParseException;
>>   */
>>  public class CLIManager
>>  {
>> -    public static final char ALTERNATE_POM_FILE = 'f';
>> +    public static final String ALTERNATE_POM_FILE = "f";
>> -    public static final char BATCH_MODE = 'B';
>> +    public static final String BATCH_MODE = "B";
>> -    public static final char SET_SYSTEM_PROPERTY = 'D';
>> +    public static final String SET_SYSTEM_PROPERTY = "D";
>> -    public static final char OFFLINE = 'o';
>> +    public static final String OFFLINE = "o";
>> -    public static final char QUIET = 'q';
>> +    public static final String QUIET = "q";
>> -    public static final char DEBUG = 'X';
>> +    public static final String DEBUG = "X";
>> -    public static final char ERRORS = 'e';
>> +    public static final String ERRORS = "e";
>> -    public static final char HELP = 'h';
>> +    public static final String HELP = "h";
>> -    public static final char VERSION = 'v';
>> +    public static final String VERSION = "v";
>> -    public static final char SHOW_VERSION = 'V';
>> +    public static final String SHOW_VERSION = "V";
>> -    public static final char NON_RECURSIVE = 'N';
>> +    public static final String NON_RECURSIVE = "N";
>> -    public static final char UPDATE_SNAPSHOTS = 'U';
>> +    public static final String UPDATE_SNAPSHOTS = "U";
>> -    public static final char ACTIVATE_PROFILES = 'P';
>> +    public static final String ACTIVATE_PROFILES = "P";
>>     public static final String SUPRESS_SNAPSHOT_UPDATES = "nsu";
>> -    public static final char CHECKSUM_FAILURE_POLICY = 'C';
>> +    public static final String CHECKSUM_FAILURE_POLICY = "C";
>> -    public static final char CHECKSUM_WARNING_POLICY = 'c';
>> +    public static final String CHECKSUM_WARNING_POLICY = "c";
>> -    public static final char ALTERNATE_USER_SETTINGS = 's';
>> +    public static final String ALTERNATE_USER_SETTINGS = "s";
>>     public static final String ALTERNATE_GLOBAL_SETTINGS = "gs";
>> -    public static final char ALTERNATE_USER_TOOLCHAINS = 't';
>> +    public static final String ALTERNATE_USER_TOOLCHAINS = "t";
>>     public static final String ALTERNATE_GLOBAL_TOOLCHAINS = "gt";
>> @@ -103,50 +103,52 @@ public class CLIManager
>>     protected Options options;
>> -    @SuppressWarnings( { "static-access", "checkstyle:linelength" } )
>> +    // CHECKSTYLE_OFF: LineLength
>>      public CLIManager()
>>      {
>>          options = new Options();
>> -        options.addOption( OptionBuilder.withLongOpt( "help"
>> ).withDescription( "Display help information" ).create( HELP ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "file"
>> ).hasArg().withDescription( "Force the use of an alternate POM file (or
>> directory with pom.xml)" ).create( ALTERNATE_POM_FILE ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "define"
>> ).hasArg().withDescription( "Define a system property" ).create(
>> SET_SYSTEM_PROPERTY ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "offline"
>> ).withDescription( "Work offline" ).create( OFFLINE ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "version"
>> ).withDescription( "Display version information" ).create( VERSION ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "quiet"
>> ).withDescription( "Quiet output - only show errors" ).create( QUIET ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "debug"
>> ).withDescription( "Produce execution debug output" ).create( DEBUG ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "errors"
>> ).withDescription( "Produce execution error messages" ).create( ERRORS ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "non-recursive"
>> ).withDescription( "Do not recurse into sub-projects" ).create(
>> NON_RECURSIVE ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "update-snapshots"
>> ).withDescription( "Forces a check for missing releases and updated
>> snapshots on remote repositories" ).create( UPDATE_SNAPSHOTS ) );
>> -        options.addOption( OptionBuilder.withLongOpt(
>> "activate-profiles" ).withDescription( "Comma-delimited list of profiles to
>> activate" ).hasArg().create( ACTIVATE_PROFILES ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "batch-mode"
>> ).withDescription( "Run in non-interactive (batch) mode (disables output
>> color)" ).create( BATCH_MODE ) );
>> -        options.addOption( OptionBuilder.withLongOpt(
>> "no-snapshot-updates" ).withDescription( "Suppress SNAPSHOT updates"
>> ).create( SUPRESS_SNAPSHOT_UPDATES ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "strict-checksums"
>> ).withDescription( "Fail the build if checksums don't match" ).create(
>> CHECKSUM_FAILURE_POLICY ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "lax-checksums"
>> ).withDescription( "Warn if checksums don't match" ).create(
>> CHECKSUM_WARNING_POLICY ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "settings"
>> ).withDescription( "Alternate path for the user settings file"
>> ).hasArg().create( ALTERNATE_USER_SETTINGS ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "global-settings"
>> ).withDescription( "Alternate path for the global settings file"
>> ).hasArg().create( ALTERNATE_GLOBAL_SETTINGS ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "toolchains"
>> ).withDescription( "Alternate path for the user toolchains file"
>> ).hasArg().create( ALTERNATE_USER_TOOLCHAINS ) );
>> -        options.addOption( OptionBuilder.withLongOpt(
>> "global-toolchains" ).withDescription( "Alternate path for the global
>> toolchains file" ).hasArg().create( ALTERNATE_GLOBAL_TOOLCHAINS ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "fail-fast"
>> ).withDescription( "Stop at first failure in reactorized builds" ).create(
>> FAIL_FAST ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "fail-at-end"
>> ).withDescription( "Only fail the build afterwards; allow all non-impacted
>> builds to continue" ).create( FAIL_AT_END ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "fail-never"
>> ).withDescription( "NEVER fail the build, regardless of project result"
>> ).create( FAIL_NEVER ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "resume-from"
>> ).hasArg().withDescription( "Resume reactor from specified project"
>> ).create( RESUME_FROM ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "projects"
>> ).withDescription( "Comma-delimited list of specified reactor projects to
>> build instead of all projects. A project can be specified by
>> [groupId]:artifactId or by its relative path" ).hasArg().create(
>> PROJECT_LIST ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "also-make"
>> ).withDescription( "If project list is specified, also build projects
>> required by the list" ).create( ALSO_MAKE ) );
>> -        options.addOption( OptionBuilder.withLongOpt(
>> "also-make-dependents" ).withDescription( "If project list is specified,
>> also build projects that depend on projects on the list" ).create(
>> ALSO_MAKE_DEPENDENTS ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "log-file"
>> ).hasArg().withDescription( "Log file where all build output will go
>> (disables output color)" ).create( LOG_FILE ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "show-version"
>> ).withDescription( "Display version information WITHOUT stopping build"
>> ).create( SHOW_VERSION ) );
>> -        options.addOption( OptionBuilder.withLongOpt(
>> "encrypt-master-password" ).hasOptionalArg().withDescription( "Encrypt
>> master security password" ).create( ENCRYPT_MASTER_PASSWORD ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "encrypt-password"
>> ).hasOptionalArg().withDescription( "Encrypt server password" ).create(
>> ENCRYPT_PASSWORD ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "threads"
>> ).hasArg().withDescription( "Thread count, for instance 2.0C where C is
>> core multiplied" ).create( THREADS ) );
>> -        options.addOption( OptionBuilder.withLongOpt(
>> "legacy-local-repository" ).withDescription( "Use Maven 2 Legacy Local
>> Repository behaviour, ie no use of _remote.repositories. Can also be
>> activated by using -Dmaven.legacyLocalRepo=true" ).create(
>> LEGACY_LOCAL_REPOSITORY ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "builder"
>> ).hasArg().withDescription( "The id of the build strategy to use" ).create(
>> BUILDER ) );
>> +        options.addOption( Option.builder( HELP ).longOpt( "help"
>> ).desc( "Display help information" ).build() );
>> +        options.addOption( Option.builder( ALTERNATE_POM_FILE ).longOpt(
>> "file" ).hasArg().desc( "Force the use of an alternate POM file (or
>> directory with pom.xml)" ).build() );
>> +        options.addOption( Option.builder( SET_SYSTEM_PROPERTY
>> ).longOpt( "define" ).hasArgs().valueSeparator().desc( "Define a system
>> property" ).build() );
>> +        options.addOption( Option.builder( OFFLINE ).longOpt( "offline"
>> ).desc( "Work offline" ).build() );
>> +        options.addOption( Option.builder( VERSION ).longOpt( "version"
>> ).desc( "Display version information" ).build() );
>> +        options.addOption( Option.builder( QUIET ).longOpt( "quiet"
>> ).desc( "Quiet output - only show errors" ).build() );
>> +        options.addOption( Option.builder( DEBUG ).longOpt( "debug"
>> ).desc( "Produce execution debug output" ).build() );
>> +        options.addOption( Option.builder( ERRORS ).longOpt( "errors"
>> ).desc( "Produce execution error messages" ).build() );
>> +        options.addOption( Option.builder( NON_RECURSIVE ).longOpt(
>> "non-recursive" ).desc( "Do not recurse into sub-projects" ).build() );
>> +        options.addOption( Option.builder( UPDATE_SNAPSHOTS ).longOpt(
>> "update-snapshots" ).desc( "Forces a check for missing releases and updated
>> snapshots on remote repositories" ).build() );
>> +        options.addOption( Option.builder( ACTIVATE_PROFILES ).longOpt(
>> "activate-profiles" ).desc( "Comma-delimited list of profiles to activate"
>> ).hasArg().build() );
>> +        options.addOption( Option.builder( BATCH_MODE ).longOpt(
>> "batch-mode" ).desc( "Run in non-interactive (batch) mode (disables output
>> color)" ).build() );
>> +        options.addOption( Option.builder( SUPRESS_SNAPSHOT_UPDATES
>> ).longOpt( "no-snapshot-updates" ).desc( "Suppress SNAPSHOT updates"
>> ).build() );
>> +        options.addOption( Option.builder( CHECKSUM_FAILURE_POLICY
>> ).longOpt( "strict-checksums" ).desc( "Fail the build if checksums don't
>> match" ).build() );
>> +        options.addOption( Option.builder( CHECKSUM_WARNING_POLICY
>> ).longOpt( "lax-checksums" ).desc( "Warn if checksums don't match"
>> ).build() );
>> +        options.addOption( Option.builder( ALTERNATE_USER_SETTINGS
>> ).longOpt( "settings" ).hasArg().desc( "Alternate path for the user
>> settings file" ).build() );
>> +        options.addOption( Option.builder( ALTERNATE_GLOBAL_SETTINGS
>> ).longOpt( "global-settings" ).hasArg().desc( "Alternate path for the
>> global settings file" ).build() );
>> +        options.addOption( Option.builder( ALTERNATE_USER_TOOLCHAINS
>> ).longOpt( "toolchains" ).hasArg().desc( "Alternate path for the user
>> toolchains file" ).hasArg().build() );
>> +        options.addOption( Option.builder( ALTERNATE_GLOBAL_TOOLCHAINS
>> ).longOpt( "global-toolchains" ).desc( "Alternate path for the global
>> toolchains file" ).hasArg().build() );
>> +        options.addOption( Option.builder( FAIL_FAST ).longOpt(
>> "fail-fast" ).desc( "Stop at first failure in reactorized builds" ).build()
>> );
>> +        options.addOption( Option.builder( FAIL_AT_END ).longOpt(
>> "fail-at-end" ).desc( "Only fail the build afterwards; allow all
>> non-impacted builds to continue" ).build() );
>> +        options.addOption( Option.builder( FAIL_NEVER ).longOpt(
>> "fail-never" ).desc( "NEVER fail the build, regardless of project result"
>> ).build() );
>> +        options.addOption( Option.builder( RESUME_FROM ).longOpt(
>> "resume-from" ).hasArg().desc( "Resume reactor from specified project"
>> ).build() );
>> +        options.addOption( Option.builder( PROJECT_LIST ).longOpt(
>> "projects" ).desc( "Comma-delimited list of specified reactor projects to
>> build instead of all projects. A project can be specified by
>> [groupId]:artifactId or by its relative path." ).hasArg().build() );
>> +        options.addOption( Option.builder( ALSO_MAKE ).longOpt(
>> "also-make" ).desc( "If project list is specified, also build projects
>> required by the list" ).build() );
>> +        options.addOption( Option.builder( ALSO_MAKE_DEPENDENTS
>> ).longOpt( "also-make-dependents" ).desc( "If project list is specified,
>> also build projects that depend on projects on the list" ).build() );
>> +        options.addOption( Option.builder( LOG_FILE ).longOpt(
>> "log-file" ).hasArg().desc( "Log file where all build output will go"
>> ).build() );
>> +        options.addOption( Option.builder( SHOW_VERSION ).longOpt(
>> "show-version" ).desc( "Display version information WITHOUT stopping build"
>> ).build() );
>> +        options.addOption( Option.builder( ENCRYPT_MASTER_PASSWORD
>> ).longOpt( "encrypt-master-password" ).optionalArg( true ).desc( "Encrypt
>> master security password" ).build() );
>> +        options.addOption( Option.builder( ENCRYPT_PASSWORD ).longOpt(
>> "encrypt-password" ).optionalArg( true ).desc( "Encrypt server password"
>> ).build() );
>> +        options.addOption( Option.builder( THREADS ).longOpt( "threads"
>> ).hasArg().desc( "Thread count, for instance 2.0C where C is core
>> multiplied" ).build() );
>> +        options.addOption( Option.builder( LEGACY_LOCAL_REPOSITORY
>> ).longOpt( "legacy-local-repository" ).desc( "Use Maven 2 Legacy Local
>> Repository behaviour, ie no use of _remote.repositories. Can also be
>> activated by using -Dmaven.legacyLocalRepo=true" ).build() );
>> +        options.addOption( Option.builder( BUILDER ).longOpt( "builder"
>> ).hasArg().desc( "The id of the build strategy to use" ).build() );
>>         // Adding this back in for compatibility with the verifier that
>> hard codes this option.
>> -        options.addOption( OptionBuilder.withLongOpt(
>> "no-plugin-registry" ).withDescription( "Ineffective, only kept for
>> backward compatibility" ).create( "npr" ) );
>> -        options.addOption( OptionBuilder.withLongOpt(
>> "check-plugin-updates" ).withDescription( "Ineffective, only kept for
>> backward compatibility" ).create( "cpu" ) );
>> -        options.addOption( OptionBuilder.withLongOpt( "update-plugins"
>> ).withDescription( "Ineffective, only kept for backward compatibility"
>> ).create( "up" ) );
>> -        options.addOption( OptionBuilder.withLongOpt(
>> "no-plugin-updates" ).withDescription( "Ineffective, only kept for backward
>> compatibility" ).create( "npu" ) );
>> +        options.addOption( Option.builder( "npr" ).longOpt(
>> "no-plugin-registry" ).desc( "Ineffective, only kept for backward
>> compatibility" ).build() );
>> +        options.addOption( Option.builder( "cpu" ).longOpt(
>> "check-plugin-updates" ).desc( "Ineffective, only kept for backward
>> compatibility" ).build() );
>> +        options.addOption( Option.builder( "up" ).longOpt(
>> "update-plugins" ).desc( "Ineffective, only kept for backward
>> compatibility" ).build() );
>> +        options.addOption( Option.builder( "npu" ).longOpt(
>> "no-plugin-updates" ).desc( "Ineffective, only kept for backward
>> compatibility" ).build() );
>> +
>>      }
>> +    // CHECKSTYLE_ON: LineLength
>>     public CommandLine parse( String[] args )
>>          throws ParseException
>> @@ -154,7 +156,7 @@ public class CLIManager
>>          // We need to eat any quotes surrounding arguments...
>>          String[] cleanArgs = CleanArgument.cleanArgs( args );
>> -        CommandLineParser parser = new GnuParser();
>> +        CommandLineParser parser = new DefaultParser();
>>         return parser.parse( options, cleanArgs );
>>      }
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
>
>