Changelog

Current

2017-01-14

  • Added: Documentation for listConverter and splitter, #253, (@jeremysolarz)
  • Fixed: Return right parameter name in exception, #227, (@jeremysolarz)
  • Fixed: JCommander#getParameters returning nothing, #315, (@simon04)
  • Fixed: Allow empty string (e.g. java -jar jcommander-program.jar param1 "") as part of main parameter, #306 (@jeremysolarz)
  • Fixed: Default value for @Parameter(help=true) parameter is not displayed in output of JCommander.usage(), #305 (@jeremysolarz)
  • Fixed: When providing two names in @Parameter always first name is given to IValueValidator, #309 (@jeremysolarz)

1.58

2016-09-29

  • Added: IStringConverterInstanceFactory to create converter instances, #279 (@simon04)
  • Added: Allow to specify the @file charset, #286 (@simon04)
  • Added: Converters InetAddressConverter (#288), CharArrayConverter (#289; @garydgregory)
  • Fixed: When using parseWithoutValidation(), JCommander uses 'parse()' on child commanders, #267 (@simon04)
  • Fixed: Share all options (such as column size, allow abbreviated options, case sensitivity) with sub commands, see JCommander.Options class, #280 (fixes #155, #244, #261, #274; @simon04)
  • Fixed: Thread-safe and non-shared converter factories, #284 (@simon04)
  • Fixed: Skip Path converter when class is not available (Android), #287 (@JesusFreke)
  • Added: JCommander now requires Java 8

1.56

2016-08-05

  • Added: Allow user to retrieve unknown command, #275

1.55

2016-02-28

  • Added: Support for disabling the @file expansion, #156
  • Fixed: Wrap usage for commands and main parameters, #258
  • Added: Read parameters from interfaces, #252
  • Added: Refuse to write to final fields, #243
  • Added: Access private fields/methods, #236
  • Fixed: Fix description line wrapping, #239
  • Fixed: Prioritize registered converters for enums over generic enum conversion, #179
  • Added: Travis CI support, https://travis-ci.org/cbeust/jcommander
  • Added: Gradle build support
  • Fixed: Better error message when there's a visibility problem.
  • Require Java 7

1.48

2015-04-11

  • Added: Added support for URL, URI, Java NIO paths parameters, #189, #219
  • Fixed: Incorrect usage formatting with single long options, #200

1.37

2014-10-05

  • Added: Support for hidden commands (Parameters), #191
  • Added: parameter overwriting (and even disallowing it for certain parameters)
  • Added: # mark comments in a @file, #199
  • Added: Support for "--"
  • Fixed: Bug in enum parsing, #184

1.34

2014-02-22

  • Fixed problem whereby Parameters returning Lists and with alternate names were being reset on the first use of an alternate name, #182

1.32

2013-09-09

  • Fixed: Main parameters with a default value should be overridden if a main parameter is specified, #137
  • Fixed: Allow enum values without converting them to uppercase, #107

1.30

2012/10/27

  • Added: JCommander#acceptUnknownOption and JCommander#getUnknownArgs
  • Added: JCommander#allowAbbreviatedOptions (default: false)
  • Added: JCommander#setCaseSensitiveOptions (default: true)
  • Added: Support for enums (Scott M Stark)
  • Fixed: Missing new lines in usage (styurin)
  • Fixed: The description of commands is now displayed on the next line and indented.

1.29

2012/07/28

  • Fixed: Empty string defaults now displayed as "" in the usage
  • Fixed: Bugs with the PositiveInteger validator
  • Fixed: Parameters with a single double quote were not working properly

1.27

2012/07/05

  • Added: IValueValidator to validate parameter values (typed) as opposed to IParameterValidator which validates strings
  • Added: echoInput, used when password=true to echo the characters (Jason Wheeler)
  • Added: @Parameter(help = true)
  • Fixed: wasn't handling parameters that start with " but don't end with one correctly
  • Fixed: if using a different option prefix, unknown option are mistakenly reported as "no main parameter defined" (kurmasz)
  • Fixed: 113: getCommandDescription() returns the description of the main parameter instead of that of the command
  • Fixed: bug with several multiple arity parameters (VariableArityTest)
  • Fixed: variable arities not working when same parameter appears multiple times.

1.25

2012/04/26

  • Added: Default passwords are no longer displayed in the usage (Paul Mendelson)
  • Added: Variable arities now work magically, no need for IVariableArity any more
  • Fixed: Commands using @Parameters(resourceBundle) were not i18n'ed properly in the usage()
  • Fixed: StringIndexOutOfBoundsException if passing an empty parameter (bomanz)
  • Fixed: #105: If no description is given for an enum, use that enum's value (Adrian Muraru)
  • Fixed: #108: Dynamic parameters with "=" in them are not parsed correctly (szhem)
  • Fixed: Commands with same prefix as options were not working properly.
  • Fixed: #97: Required password always complains that it is not specified (timoteoponce)

1.23

2012/01/12

  • Added: @DynamicParameter
  • Fixed: Use JDK 6 Console() when available to improve support of non ascii chars (Julien Henry)

1.20

2011/11/24

  • Added: Support for delegating parameter definitions to child classes (rodionmoiseev)
  • Added: @Parameter(commandNames) so that command names can be specified with annotations
  • Added: Support for enums (Adrian Muraru)
  • Fixed: Throw if an unknown option is found
  • Fixed: Main parameters are now validated as well (Connor Mullen)

1.19

2011/10/10

  • Added: commandDescriptionKey to @Parameters, to allow internationalized command descriptions
  • Added: JCommander#setParameterDescriptionComparator for better control over usage()
  • Fixed: Fields of type Set (HashSet and SortedSet) are now supported
  • Fixed: defaults for commands were not properly applied (Stevo Slavic)
  • Fixed: "-args=a=b,b=c" was not being parsed correctly (Michael Lancaster)
  • Fixed: #73: descriptionKey was being ignored on main parameters

1.18

2011/07/20

  • Added: Default converter factories can be overridden (Scott Clasen)
  • Added: IParameterValidator
  • Added: Don't display "Options:" if none were defined
  • Added: Enforce that the type of the main parameter is a List
  • Added: usage() now displays the options for each command as well
  • Fixed: Default values with a validator were being validate at parse() time instead of creation time.
  • Fixed: Exception when using an @ file with empty lines between options
  • Fixed: OOM when parsing certain descriptions with long URL's in them

1.15

2011/01/24

  • Added: Added a constructor that takes a Bundle only, #47 (Russell Egan)
  • Fixed: NPE with calling getCommandDescription() of an unknown command

1.13

2010/12/15

  • Added: Boolean parameters with arity 0 (e.g. "foo -debug")
  • Fixed: JCommander would sometimes just print a stack trace and continue, now rethrowing.

1.7

2010/09/06

  • Added: Command usages are now shown in the order they were added to the JCommander object
  • Fixed: JCommander now compatible with Java 5
  • Fixed: Minor bug in the command display (Marc Ende)

1.6

2010/08/28

  • Added: @Parameters(commandDescription = "command description")
  • Added: now throwing an exception if required main parameters are not supplied
  • Fixed: usage() was changing default values after two runs (jstrachan)

1.5

2010/08/15

  • Added: overloaded versions of usage() with StringBuilders
  • Added: inheritance support (Guillaume Sauthier)
  • Added: support for commands (e.g. "main add --author=cbeust Foo.java")
  • Added: support for converters for main parameters (e.g. List).

1.4

2010/07/28

  • Added: string converter factories
  • Added: IDefaultProvider
  • Added: PropertyFileDefaultProvider
  • Added: Usage is now showing required parameters and default value
  • Added: Support for values that look like parameters ("-integer -3", "/file /tmp/a")
  • Added: @Parameters(optionPrefixes) to allow for different prefixes than "-"

1.2

2010/07/25

  • Usage is now aligned and alphabetically sorted
  • Added the hidden attribute
  • Added support for different separators than " " (e.g. "=").
  • Deprecated @ResourceBundle, replaced with @Parameters

1.1

2010/08/15

  • Better internationalization
  • Password support
  • Type converters