M12i.

学術書・マンガ・アニメ・映画の消費活動とプログラミングについて

Apache Commons CLI 1.3がリリースされている

いつのまにかApache Commons CLI 1.3がリリースされていました。

Apache Commons CLIJavaコマンドラインツールを作成する際に便利なライブラリ。コマンドライン・オプションの定義を行い、その定義にしたがって引数(public void main(String... args)メソッドに渡されるアレ)をパースしたり、ヘルプ表示を自動生成させたりできます。バージョン1.2の使い方についてはこちら(私個人の記事)やこちらチュートリアルの翻訳)があります。

1.2から1.3へのバージョンアップにともない、わりと大掛かりにインターフェースの変更が行われているようで、リリースノートによれば:

NOTES

新しいパーサ DefaultParser が利用可能なった。このパーサはGnuParserPosixParserの特徴を兼ね備えている。そのうえこのパーサは長いオプションに対する部分一致や、セパレータをともなわない長いオプション(例えばJVMのメモリー設定である-Xmx512mのような)の機能も提供している。この新しいパーサの登場によりそれ以前の2つのパーサは廃止予定のクラスとなった。

DEPRECATIONS

  • org.apache.commons.cli.BasicParserorg.apache.commons.cli.DefaultParserにより置き換えられた。
  • org.apache.commons.cli.GnuParserorg.apache.commons.cli.DefaultParserにより置き換えられた。
  • org.apache.commons.cli.OptionBuilderorg.apache.commons.cli.Option.builder()org.apache.commons.cli.Option.builder(String)、そしてorg.apache.commons.cli.Option.Builderにより置き換えられた。
  • org.apache.commons.cli.Parserorg.apache.commons.cli.DefaultParserにより置き換えられた。
  • org.apache.commons.cli.PosixParserorg.apache.commons.cli.DefaultParserにより置き換えられた。

(中略)

というわけで、例えば従来PosixParserを使っていたアプリケーションでは、今後DefaultParserを使うことになります。

またコマンドライン・オプションの定義を行う際に活躍するOptionBuilderOption.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を参照してください。