Apache Commons CLI 1.3がリリースされている
いつのまにかApache Commons CLI 1.3がリリースされていました。
Apache Commons CLIはJavaでコマンドライン・ツールを作成する際に便利なライブラリ。コマンドライン・オプションの定義を行い、その定義にしたがって引数(public void main(String... args)
メソッドに渡されるアレ)をパースしたり、ヘルプ表示を自動生成させたりできます。バージョン1.2の使い方についてはこちら(私個人の記事)やこちら(チュートリアルの翻訳)があります。
1.2から1.3へのバージョンアップにともない、わりと大掛かりにインターフェースの変更が行われているようで、リリースノートによれば:
NOTES
新しいパーサ
DefaultParser
が利用可能なった。このパーサはGnuParser
とPosixParser
の特徴を兼ね備えている。そのうえこのパーサは長いオプションに対する部分一致や、セパレータをともなわない長いオプション(例えばJVMのメモリー設定である-Xmx512m
のような)の機能も提供している。この新しいパーサの登場によりそれ以前の2つのパーサは廃止予定のクラスとなった。DEPRECATIONS
org.apache.commons.cli.BasicParser
はorg.apache.commons.cli.DefaultParser
により置き換えられた。org.apache.commons.cli.GnuParser
はorg.apache.commons.cli.DefaultParser
により置き換えられた。org.apache.commons.cli.OptionBuilder
はorg.apache.commons.cli.Option.builder()
とorg.apache.commons.cli.Option.builder(String)
、そしてorg.apache.commons.cli.Option.Builder
により置き換えられた。org.apache.commons.cli.Parser
はorg.apache.commons.cli.DefaultParser
により置き換えられた。org.apache.commons.cli.PosixParser
はorg.apache.commons.cli.DefaultParser
により置き換えられた。(中略)
というわけで、例えば従来PosixParser
を使っていたアプリケーションでは、今後DefaultParser
を使うことになります。
またコマンドライン・オプションの定義を行う際に活躍するOptionBuilder
はOption.Builder
で置き換えられ、結果としてオプション定義構築時に呼び出すメソッド名やメソッド・シグネチャが変更になっています。
例えば従来は以下のようにしていたところが:
final Options options = new Options(); options.addOption(OptionBuilder .isRequired() .hasArg() .withArgName("foo") .withDescription("...") .create('f'));
バージョン1.3では以下のようになるということです:
final Options options = new Options(); options.addOption(Option.builder("f") .required() .hasArg() .argName("foo") .desc("...") .build());
詳細は最新版のJavadocを参照してください。