<?xml version="1.0"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

       https://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<document xmlns="http://maven.apache.org/changes/2.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/changes/2.0.0 https://maven.apache.org/xsd/changes-2.0.0.xsd">
  <properties>
    <title>Apache Commons CLI Release Notes</title>
  </properties>
  <body>
    <release version="1.11.0" date="2025-11-08" description="This is a feature and maintenance release. Java 8 or later is required.">
      <!-- FIX -->
      <action type="fix" issue="CLI-351" dev="ggregory" due-to="Damien Carbonne, Claude Warren, Gary Gregory">Multiple trailing BREAK_CHAR_SET characters cause infinite loop in HelpFormatter.</action>
      <action type="fix" issue="CLI-351" dev="ggregory" due-to="Damien Carbonne, Claude Warren, Gary Gregory">Fix issue with groups not being reported in help output. #411.</action>
      <!-- ADD -->
      <action type="add" dev="ggregory" due-to="David Larochette, Gary Gregory">Add CommandLine.getOptionCount() to measure option repetition #396.</action>
      <!-- UPDATE -->
      <action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">Bump org.apache.commons:commons-parent from 85 to 91 #393.</action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">Bump commons-io:commons-io from 2.20.0 to 2.21.0.</action>
    </release>
    <release version="1.10.0" date="2025-07-30" description="This is a feature and maintenance release. Java 8 or later is required.">
      <!-- FIX -->
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate CommandLine.Builder() in favor of CommandLine.builder().</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate DeprecatedAttributes.Builder() in favor of DeprecatedAttributes.builder().</action>
      <action type="fix" dev="ggregory" due-to="Dávid Szigecsán">Refactor default parser test #294.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Port to JUnit 5.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Generics for Converter should use Exception not Throwable.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Pick up maven-antrun-plugin version from parent POM org.apache:apache.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Javadoc is missing its Overview page.</action>
      <action type="fix" dev="ggregory" due-to="Arnout Engelen">Get mockito version from parent pom (#351).</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Remove -nouses directive from maven-bundle-plugin. OSGi package imports now state 'uses' definitions for package imports, this doesn't affect JPMS (from org.apache.commons:commons-parent:80).</action>
      <action type="fix" dev="ggregory" due-to="Arnout Engelen">Deprecate PatternOptionBuilder.PatternOptionBuilder().</action>
      <action type="fix" issue="CLI-341" dev="ggregory" due-to="Ruiqi Dong, Gary Gregory">HelpFormatter infinite loop with 0 width input.</action>
      <action type="fix" issue="CLI-349" dev="ggregory" due-to="Leo Fernandes, Gary Gregory">Fail faster with a more precise NullPointerException: Option.processValue() throws NullPointerException when passed null value with value separator configured.</action>
      <action type="fix" issue="CLI-344" dev="ggregory" due-to="Ruiqi Dong, Gary Gregory">Fail faster with a more precise NullPointerException: DefaultParser.parse() throws NullPointerException when options parameter is null.</action>
      <action type="fix" issue="CLI-347" dev="ggregory" due-to="Ruiqi Dong, Gary Gregory">Options.addOptionGroup(OptionGroup) does not remove required options from requiredOpts list.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.commons.cli.Option.Builder.get() should throw IllegalStateException instead of IllegalArgumentException.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.commons.cli.Option.processValue(String) should throw IllegalStateException instead of IllegalArgumentException.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.commons.cli.OptionBuilder.create() should throw IllegalStateException instead of IllegalArgumentException.</action>
      <!-- ADD -->
      <action type="add" issue="CLI-339" dev="ggregory" due-to="Claude Warren, Gary Gregory">Help formatter extension in the new package #314.</action>
      <action type="add" dev="ggregory" due-to="Gary Gregory">CommandLine.Builder implements Supplier&lt;CommandLine&gt;.</action>
      <action type="add" dev="ggregory" due-to="Gary Gregory">DefaultParser.Builder implements Supplier&lt;DefaultParser&gt;.</action>
      <action type="add" issue="CLI-340" dev="ggregory" due-to="Claude Warren, Gary Gregory">Add CommandLine.getParsedOptionValues() #334.</action>
      <action type="add" issue="CLI-333" dev="ggregory" due-to="Claude Warren, Gary Gregory">org.apache.commons.cli.Option.Builder implements Supplier&lt;Option&gt;.</action>
      <action type="add" dev="ggregory" due-to="Tamás Cservenák">Add new options for parsing: ignore and skip.</action>
      <!-- UPDATE -->
      <action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">Bump org.apache.commons:commons-parent from 72 to 85 #302, #304, #310, #315, #320, #327, #371.</action>
      <action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">[test] Bump commons-io:commons-io from 2.16.1 to 2.20.0 #309, #337.</action>
      <action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">[test] Bump org.apache.commons:commons-text from 1.12.0 to 1.14.0 #344.</action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">Update site documentation to https://maven.apache.org/xsd/xdoc-2.0.xsd.</action>
    </release>
    <release version="1.9.0" date="2024-08-10" description="This release contains new features and bug fixes and requires Java 8 or above.">
      <!-- ADD -->
      <action type="add" dev="ggregory" due-to="Gary Gregory">Add OptionGroup.isSelected().</action>
      <action type="add" dev="ggregory" due-to="Gary Gregory">You can now extend HelpFormatter.Builder.</action>
      <action type="add" dev="ggregory" due-to="Claude Warren">Add 'since' attribute to Option to track when an Option was introduced #292</action>
      <!-- FIX -->
      <action type="fix" issue="CLI-334" dev="ggregory" due-to="Eric Pugh">Fix Javadoc pathing #280.</action>
      <action type="fix" issue="CLI-335" dev="ggregory" due-to="Claude Warren">Updated properties documentation #285.</action>
      <action type="fix" issue="CLI-336" dev="ggregory" due-to="Claude Warren, Gary Gregory">Deprecation not always reported #284.</action> 
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Replace internal StringBuffer with StringBuilder.</action>
      <!-- UPDATE -->
      <action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">Bump org.apache.commons:commons-parent from 70 to 72 #283.</action>
    </release>
    <release version="1.8.0" date="2024-05-18" description="This release contains new features and bug fixes and requires Java 8 or above.">
      <!-- ADD -->
      <action type="add" issue="CLI-332" dev="ggregory" due-to="Claude Warren, Gary Gregory">Add optional HelpFormatter Function to document Deprecated options #271.</action>
      <action type="add" dev="ggregory" due-to="Gary Gregory">Add PMD check to default Maven goal.</action>
      <!-- FIX -->
      <action type="fix" issue="CLI-331" dev="ggregory" due-to="Claude Warren, Gary Gregory">Handle reporting of deprecated options when parameters are not String type. #270.</action>
      <action type="fix" dev="ggregory" due-to="Claude Warren, Gary Gregory">Avoid throwing NullPointerException when calling CommandLineParser will null array elements.</action>
      <action type="fix" dev="ggregory" due-to="Claude Warren">Cleanup deprecation issues #272.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix PMD UnnecessaryFullyQualifiedName issues.</action>
      <!-- UPDATE -->
      <action type="update" dev="ggregory" due-to="Gary Gregory">Bump commons-parent from 69 to 70.</action>
    </release>
    <release version="1.7.0" date="2024-04-13" description="This release contains new features and bug fixes and requires Java 8 or above.">
      <!-- FIX -->
      <action type="fix" issue="CLI-312" dev="ggregory" due-to="Claude Warren, Gary Gregory">Inconsistent behavior in key/value pairs (Java property style).</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException in Util.stripLeadingAndTrailingQuotes(String).</action>
      <action type="fix" issue="CLI-320" dev="ggregory" due-to="Paul King, Claude Warren">Awkward behavior of Option.builder() for multiple optional args.</action>
      <action type="fix" issue="CLI-325" dev="ggregory" due-to="Claude Warren">Properties from multiple arguments with value separator. #237.</action>
      <action type="fix" issue="CLI-327" dev="ggregory" due-to="Claude Warren, Gary Gregory">Fix for expected textual date values. #244.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Option.Builder.option("") should throw IllegalArgumentException instead of ArrayIndexOutOfBoundsException.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException in CommandLine.getOptionValues(Option|String).</action>
      <!-- ADD -->
      <action type="add" issue="CLI-321" dev="ggregory" due-to="Claude Warren, Gary Gregory">Add and use a Converter interface and implementations without using BeanUtils #216.</action>
      <action type="add" dev="ggregory" due-to="Gary Gregory">Add Maven property project.build.outputTimestamp for build reproducibility.</action>
      <action type="add" issue="CLI-322" dev="ggregory" due-to="Claude Warren, Gary Gregory">Add '-' as an option char and implemented extensive tests #217.</action>
      <action type="add" issue="CLI-324" dev="ggregory" due-to="Claude Warren, Gary Gregory">Make adding OptionGroups and Options to existing Options easier #230.</action>
      <action type="add" issue="CLI-323" dev="ggregory" due-to="Claude Warren, Gary Gregory">Added Supplier&lt;T&gt; defaults for getParsedOptionValue #229.</action>
      <action type="add" issue="CLI-326" dev="ggregory" due-to="Claude Warren, Gary Gregory">Make Option.getKey() public #239.</action>
      <action type="add" dev="ggregory" due-to="Claude Warren, Gary Gregory">Add builder factory CommandLine#builder().</action>
      <action type="add" issue="CLI-329" dev="ggregory" due-to="Eric Pugh, Gary Gregory">Support "Deprecated" CLI Options #252.</action>
      <!-- UPDATE -->
      <action type="update" dev="ggregory" due-to="Gary Gregory">Bump commons-parent from 64 to 69 #256.</action>
      <action type="update" dev="ggregory" due-to="Elric, Gary Gregory">Update the tests to JUnit 5 #238.</action>
      <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump tests commons-io:commons-io from 2.16.0 to 2.16.1 #258.</action>
    </release>
    <release version="1.6.0" date="2023-10-23" description="This release contains new features and bug fixes and requires Java 8 or above.">
      <!-- FIX -->
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Fix SpotBugs Error: Medium: Method intentionally throws RuntimeException. [org.apache.commons.cli.Option] At Option.java:[lines 417-423] THROWS_METHOD_THROWS_RUNTIMEEXCEPTION
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Fix SpotBugs Error: Medium: Method intentionally throws RuntimeException. [org.apache.commons.cli.Option] At Option.java:[lines 446-450] THROWS_METHOD_THROWS_RUNTIMEEXCEPTION
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Fix SpotBugs Error: Medium: Method intentionally throws RuntimeException. [org.apache.commons.cli.Option] At Option.java:[lines 474-478] THROWS_METHOD_THROWS_RUNTIMEEXCEPTION
      </action>
      <action type="update" dev="ggregory" due-to="Ken Dombeck">
        Use EMPTY_STRING_ARRAY constant. #102.
      </action>
      <action type="update" dev="ggregory" due-to="Arturo Bernal">
        Fix site links that are broken #155.
      </action>
      <action type="update" dev="ggregory" due-to="Arturo Bernal">
        Use Math.max() #111. Delete unused assignment #112.
      </action>
      <action dev="ggregory" type="fix" due-to="step-security-bot, Gary Gregory">
        [StepSecurity] ci: Harden GitHub Actions #176.
      </action>
      <action dev="ggregory" type="fix" due-to="Alexander Veit, Gary Gregory" issue="CLI-318">
        Inconsistent date format in changes report.
      </action>
      <action dev="ggregory" type="fix" due-to="Dilraj Singh, Gary Gregory" issue="CLI-283">
        Fix NPE in CommandLine.resolveOption(String).
      </action>
      <action dev="ggregory" type="fix" due-to="Dilraj Singh, Gary Gregory" issue="CLI-283">
        CommandLine.addOption(Option) should not allow a null Option.
      </action>
      <action dev="ggregory" type="fix" due-to="Gary Gregory" issue="CLI-283">
        CommandLine.addArgs(String) should not allow a null String.
      </action>
      <action dev="ggregory" type="fix" due-to="Julian Schilling, Gary Gregory" issue="CLI-303">
        Site docs: "Usage Scenarios" refers to deprecated methods.
      </action>
      <action dev="ggregory" type="fix" due-to="Philippe Bastiani, Sruteesh Kumar Paramata, Gary Gregory" issue="CLI-317">
        NullPointerException thrown by CommandLineParser.parse().
      </action>
      <action dev="ggregory" type="fix" due-to="Dominik Stadler, HUNG LU, Sruteesh Kumar Paramata" issue="CLI-313">
        StringIndexOutOfBoundsException thrown by CommandLineParser.parse().
      </action>
      <!-- ADD -->
      <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">
        Add github/codeql-action.
      </action>
      <!-- UPDATES -->
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Bump Java from 7 to 8.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">
        Bump actions/cache from 2.1.7 to 3.0.10 #97, #130, #132.
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">
        Bump actions/checkout from 3 to 3.1.0 #133.
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Bump actions/setup-java from 2 to 3.6.0 #136.
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">
        Bump spotbugs from 4.5.3 to 4.7.3 #96, #107, #113, #125, #138.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump spotbugs-maven-plugin from 4.5.3.0 to 4.7.3.0 #98, #108, #115, #117, #126, #145.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">
        Bump commons-parent from 52 to 64 #100, #128, #151, #158.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump maven-antrun-plugin from 3.0.0 to 3.1.0 #103.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump maven-javadoc-plugin from 3.3.2 to 3.4.1 #105, #120.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump maven-pmd-plugin from 3.16.0 to 3.19.0 #110, #124.
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Bump jacoco-maven-plugin from 0.8.7 to 0.8.8.
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Bump maven-checkstyle-plugin from 3.1.2 to 3.2.0 #121.
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Bump japicmp-maven-plugin from 0.15.4 to 0.16.0.
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Update JUnit 4 to 5 vintage.
      </action>
    </release>
    <release version="1.5.0" date="2021-10-23" description="This release contains new features and bug fixes and requires Java 7 or above.">
      <!-- FIX -->
      <action type="fix" dev="ggregory" due-to="Gary Gregory">
        Fix NPE in DefaultParser.isLongOption(String).
      </action>
      <action type="fix" dev="britter" due-to="Krishna Mohan Rao Kandunoori" issue="CLI-279">
        @param or @return lines should end with a period in CommandLine.java
      </action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">
        Replace deprecated FindBugs with SpotBugs.
      </action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">
        Replace CLIRR with JApiCmp.
      </action>
      <action type="fix" dev="ggregory" due-to="Elliotte Rusty Harold">
        Option Javadocs grammar nits #55.
      </action>
      <action type="fix" dev="ggregory" due-to="Arturo Bernal, Gary Gregory">
        Minor Improvements #57, #61.
      </action>
      <action type="fix" dev="ggregory" due-to="stoty" issue="CLI-254">
        Input "test" gets parsed as test, quotes die #58.
      </action>
      <action type="fix" dev="ggregory" due-to="MrQubo, Gary Gregory" issue="CLI-287">
        Allow whitespace-only header and footer #26.
      </action>
      <!-- ADD -->
      <action type="add" dev="chtompki" due-to="Rubin Simons" issue="CLI-217">
        Accommodate toggling partial matching in DefaultParser.
      </action>
      <action type="add" dev="britter" due-to="Béla Schaum" issue="CLI-274">
        Option parser type EXISTING_FILE_VALUE not check file existing
      </action>
      <action type="add" dev="britter" due-to="Christoph Läubrich" issue="CLI-271">
        CommandLine.getXXX and CommandLine.hasXXX should accept an Option as a parameter
      </action>
      <action type="add" dev="ggregory" due-to="Jason Dillon" issue="CLI-276">
        Adjust access-modifier of checkRequiredOptions() to protected.
      </action>
      <action type="add" dev="ggregory" due-to="Alex Nordlund" issue="CLI-282">
        TypeHandler should throw ParseException for an unsupported class.
      </action>
      <action type="add" dev="ggregory" due-to="Waldemar Sojka, Gary Gregory">
        Added setter for Builder.option #33.
      </action>
      <action type="add" dev="ggregory" due-to="Waldemar Sojka, Gary Gregory">
        Add Option unit tests #76.
      </action>
      <!-- UPDATE -->
      <action type="update" dev="ggregory" issue="CLI-294">
        Update Java from version 5 to 7.
      </action>
      <action type="update" dev="ggregory" due-to="Mincong Huang">
        Docs: Replace OptionBuilder in usage page #30.
      </action>
      <action type="update" dev="ggregory" due-to="dengliming">
        Remove deprecated sudo setting. #36.
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">
        Bump junit:junit from 4.12 to 4.13.2, #53, #60.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump commons-parent from 48 to 52.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump maven-pmd-plugin from 3.12.0 to 3.16.0, #44, #54, #67, #92.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump actions/checkout from 2.3.1 to 3 #46, #72, #78, #93.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">
        Bump actions/setup-java from v1.4.2 to v2 #50.
       </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump maven-antrun-plugin from 1.7 to 3.0.0 #43.
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Bump maven-checkstyle-plugin from 2.15 to 3.1.2 #41.
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Bump checkstyle to 9.3 #68, #86, #90.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump actions/cache from 2 to 2.1.7 #64, #65, #81.
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Bump commons.animal-sniffer.version 1.19 -> 1.20.
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Bump maven-bundle-plugin 5.1.1 -> 5.1.2.
      </action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">
        Bump biz.aQute.bndlib.version 5.1.2 -> 6.0.0.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump spotbugs from 4.4.1 to 4.5.3 #70, #88.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump spotbugs-maven-plugin from 4.4.1 to 4.5.3.0 #71, #85, #87.
      </action>
      <action type="update" dev="ggregory" due-to="Dependabot">
        Bump maven-javadoc-plugin from 3.3.1 to 3.3.2, #91.
      </action>
    </release>
    <release version="1.4" date="2017-03-09" description="This release contains new features and bug fixes and requires Java 5 or above.">
      <action type="add" dev="rfscholte" issue="CLI-269">
        Introduce CommandLine.Builder
      </action>
      <action type="fix" dev="britter" issue="CLI-265" due-to="Martin Sandiford">
        Optional argument picking up next regular option as its argument
      </action>
      <action type="add" dev="britter" issue="CLI-267" due-to="Ricardo Ribeiro">
        Add an addRequiredOption method to Options
      </action>
      <action type="fix" dev="britter" issue="CLI-266" due-to="Ravi Teja">
        HelpFormatter.setOptionComparator(null) doesn't display the values in inserted order
      </action>
    </release>
    <release version="1.3.1" date="2015-06-17" description="This release contains bug fixes and requires Java 5 or above.">
      <action type="fix" dev="britter" issue="CLI-252" due-to="Simon Harrer">
        LongOpt falsely detected as ambiguous
      </action>
    </release>
    <release version="1.3" date="2015-05-09" description="This release contains new features and bug fixes and requires Java 5 or above..">
      <action type="fix" dev="djones" issue="CLI-248">
        Fixed broken Javadoc links on Introduction page.
      </action>
      <action type="fix" dev="tn" issue="CLI-234" due-to="Greg Thomas">
        Fixed code example in javadoc of "Option#Builder#valueSeparator(char)".
      </action>
      <action type="fix" dev="tn" issue="CLI-241" due-to="Beluga Behr">
        Clarified behavior of "OptionValidator#validateOption(String)" in case of null input.
      </action>
      <action type="update" dev="tn" issue="CLI-240" due-to="Beluga Behr">
        Small cleanup of Option class.
      </action>
      <action type="update" dev="tn" issue="CLI-231" due-to="Duncan Jones">
        Removed DoubleCheckedLocking test from checkstyle configuration.
      </action>
      <action type="update" dev="tn" issue="CLI-230">
        Options.getRequiredOptions() now returns an unmodifiable list.
      </action>
      <action type="add" dev="tn" issue="CLI-224" due-to="Duncan Jones, Brian Blount">
        Added new fluent API to create Option instances via builder class Option.Builder.
        This replaces the now deprecated OptionBuilder.
      </action>
      <action type="update" dev="tn" issue="CLI-218" due-to="Sven">
        Clarify javadoc for CommandLine.getOptionValue() that the first specified
        argument will be returned.
      </action>
      <action type="add" dev="tn" issue="CLI-214" due-to="Alexandru Mocanu">
        Added new method Options.addOption(String, String).
      </action>
      <action type="update" dev="tn" issue="CLI-227" due-to="Duncan Jones">
        Changed unit tests to junit 4 annotation style.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-202">
        Default options will now work correctly with required options that are missing.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-203">
        Default options will now work correctly together with option groups.
      </action>
      <action type="update" dev="ebourg" issue="CLI-209" due-to="Thomas Herre">
        The javadoc of OptionBuilder now states that the class is not thread-safe.
      </action>
      <action type="add" dev="ebourg" issue="CLI-169" due-to="J. Lewis Muir">
        HelpFormatter now supports setting the displayed separator of long options.
      </action>
      <action type="update" dev="ebourg" issue="CLI-197" due-to="Anders Larsson">
        Improve description of parameter "stopAtNonOption" in method
        CommandLine.parse(Options, String[], boolean).
      </action>
      <action type="fix" dev="ebourg" issue="CLI-204">
        Passing default values for not defined options to a parser will now trigger
        a ParseException instead of a NullPointerException.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-205">
        HelpFormatter.setArgName(String) now correctly sets the argument name.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-201">
        Default properties provided as input to the Parser.parse() methods are now
        correctly processed.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-215" due-to="Manuel Müller">
        CommandLine.getParsedOptionValue() now returns a String object if no
        option type has been explicitly set.
      </action>
      <action type="update" dev="ggregory" issue="CLI-200" due-to="Gerard Weatherby">
        Fixed typo in javadoc of class CommandLine.
      </action>
      <action type="update" dev="ebourg" issue="CLI-223" due-to="Gerard Weatherby">
        Source code now uses generic types instead of raw types where possible.
      </action>
      <action type="update" dev="ebourg" issue="CLI-220" due-to="Joe Casadonte">
        Corrected javadoc for return type of MissingOptionException.getMissingOptions().
      </action>
      <action type="fix" dev="ebourg" issue="CLI-212" due-to="Per Cederberg">
        HelpFormatter now prints command-line options in the same order as they
        have been added.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-186" due-to="Kristoff Kiefer">
        Standard help text now shows mandatory arguments also for the first option.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-207" due-to="Uri Moszkowicz">
        HelpFormatter does not strip anymore leading whitespace in the footer text.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-185" due-to="Einar M R Rosenvinge">
        Strip quotes contained in argument values only if there is exactly one at the
        beginning and one at the end.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-184">
        Negative numerical arguments take precedence over numerical options (only supported
        by the new DefaultParser).
      </action>
      <action type="fix" dev="ebourg" issue="CLI-193" due-to="Travis McLeskey">
        Fix possible StringIndexOutOfBoundsException in HelpFormatter.
      </action>
      <action type="add" dev="ebourg" issue="CLI-161,CLI-167,CLI-181">
        A new parser is available: DefaultParser. It combines the features of the GnuParser and the PosixParser.
        It also provides additional features like partial matching for the long options, and long options without
        separator (i.e like the JVM memory settings: -Xmx512m). This new parser deprecates the previous ones.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-183">
        OptionGroups no longer throw an AlreadySelectedException when reused for several parsings.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-182">
        OptionGroup now selects properly an option with no short name.
      </action>
      <action type="add" dev="ebourg" issue="CLI-160">
        PosixParser now supports partial long options (--ver instead of --version).
      </action>
    </release>
    <release version="1.2" date="2009-03-19" description="This release contains new features and bug fixes and requires Java 5 or above.">
      <action type="fix" dev="joehni" issue="CLI-177">
        OptionBuilder is now reseted if an IllegalArgumentException occurs in create().
      </action>
      <action type="remove" dev="bayard">
        Ant build system removed. 
      </action>
      <action type="fix" dev="ebourg" issue="CLI-154">
        Incomplete usage documentation about Java property option.
      </action>
      <action type="fix" dev="bayard" issue="CLI-170">
        TypeHandler prints messages to stderr.
      </action>
      <action type="fix" dev="bayard" issue="CLI-162">
        Infinite loop in the wrapping code of HelpFormatter.
      </action>
      <action type="fix" dev="sgoeschl">
        Fixing some minor javadoc issues.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-137">
        The number of arguments defined for an option specifies the arguments per occurrence of the option
        and not for all occurrences. This was a major regression in CLI 1.1 which prevented the use of repeated options.
      </action>
      <action type="add" dev="ebourg">
        Added a getOptionProperties() method in the CommandLine class to retrieve easily the key/value pairs
        specified with options like -Dkey1=value1 -Dkey2=value2.
      </action>
      <action type="update" dev="ebourg" issue="CLI-157">
        GnuParser now supports long options with an '=' sign (ie. --foo=bar and -foo=bar)
      </action>
      <action type="fix" dev="ebourg" issue="CLI-164">
        PosixParser no longer ignores unrecognized short options.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-163">
        PosixParser no longer stops the bursting process of a token if stopAtNonOption is enabled and a non option
        character is encountered.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-165">
        PosixParser no longer keeps processing the tokens after an unrecognized long option
        when stopAtNonOption is enabled.
      </action>
      <action type="fix" dev="ebourg" issue="CLI-156">
        Required options are properly checked if an Options instance is used twice to parse a command line.
      </action>
      <action type="update" dev="bayard" issue="CLI-155">
        The ordering of options can be defined in help messages.
      </action>
      <action type="fix" dev="bayard" issue="CLI-151" due-to="Dan Armbrust">
        The line wrapping in HelpFormatter now works properly. This caused CLI-162, and thus there was a feature change 
        for the HelpFormatter in that it is strict on width now rather than what seemed to be lenience before. Text without 
        whitespace will be cut off to fit in the spacing, and an IllegalStateException will be thrown if it is impossible 
        to output the information due to spacing constraints. 
      </action>
      <action type="fix" dev="bayard" issue="CLI-149">
        The message of MissingOptionException has been improved.
      </action>
      <action type="update" dev="ebourg" issue="CLI-86">
        The exceptions have been enhanced with methods to retrieve easily the related options.
      </action>
      <action type="fix" dev="bayard" issue="CLI-141" due-to="Henning Schmiedehausen, Bjorn Townsend">
        Option.toString() now reports arguments properly.
      </action>
      <action type="update" dev="bayard" issue="CLI-142" due-to="Henning Schmiedehausen">
        The Parser class has been changed to be more easily extendable.
      </action>
      <action type="update" dev="bayard" issue="CLI-140">
        The following classes are now serializable: Option, OptionGroup, CommandLine and Options.
      </action>
      <action type="remove" dev="ebourg">
        OptionValidator is no longer public, its methods were all private.
      </action>
    </release>
    <release version="1.1" date="2007-07-08" description="This is a maintenance release containing bug fixes.">
      <action type="fix" issue="CLI-2">Wrong usage summary. </action>
      <action type="fix" issue="CLI-5">Dependecy on commons-lang-2.0 but commons-lang-1.0 is obtained. </action>
      <action type="fix" issue="CLI-8">Line separator as first char for helpformatter (footer) throws exception. </action>
      <action type="fix" issue="CLI-13">CommandLine.getOptionValue() behaves contrary to docs. </action>
      <action type="fix" issue="CLI-21">clone method in Option should use super.clone(). </action>
      <action type="fix" issue="CLI-23">Passing properties in Parser does not work for options with a single argument. </action>
      <action type="fix" issue="CLI-26">Only long options without short option seems to be noticed. </action>
      <action type="fix" issue="CLI-28">Infinite Loop in Command-Line processing. </action>
      <action type="fix" issue="CLI-29">Options should not be able to be added more than once. </action>
      <action type="fix" issue="CLI-35">HelpFormatter doesn't sort options properly. </action>
      <action type="fix" issue="CLI-38">HelpFormatter doesn't function correctly for options with only LongOpt. </action>
      <action type="fix" issue="CLI-44">Document enhancement. </action>
      <action type="fix" issue="CLI-45">Documentation errors. </action>
      <action type="fix" issue="CLI-51">Parameter value "-something" misinterpreted as a parameter. </action>
      <action type="fix" issue="CLI-56">clone() method doesn't fully clone contents. </action>
      <action type="fix" issue="CLI-59">No Javadoc for HelpFormatter!. </action>
      <action type="fix" issue="CLI-65">Parser breaks up command line parms into single characters. </action>
      <action type="fix" issue="CLI-67">Missing arguments in HelpFormatter.renderOptions(..). </action>
      <action type="fix" issue="CLI-69">Error parsing option arguments. </action>
      <action type="fix" issue="CLI-71">A weakness of parser. </action>
      <action type="add" issue="CLI-78">Setting description of a Option. </action>
      <action type="fix" issue="CLI-129">CLI_1_BRANCH build.xml doesn't work. </action>
      <action type="fix" issue="CLI-130">Remove the Commons Lang dependency. </action>
      <action type="fix" issue="CLI-131">Options class returns options in random order. </action>
      <action type="fix" issue="CLI-132">MissingOptionException should contain a useful error message. </action>
      <action type="fix" issue="CLI-133">NullPointerException in Util.stripLeadingHyphens when passed a null argument. </action>
      <action type="fix" issue="CLI-134">1.1 is not backwards compatible because it adds methods to the CommandLineParser interface. </action>
      <action type="fix" issue="CLI-135">Backwards compatibility between 1.1 and 1.0 broken due to Option.addValue removal. </action>
    </release>
    <release version="1.0" date="2002-11-06" description="Initial release"/>    
  </body>
</document>
