Commons CLI で設定したオプションをソートせずに help 表示・出力する方法。
HelpFormatter#setOptionComparator に null を渡せばソートが無効化される。
HelpFormatter のデフォルトでは、 Options に設定したオプションが通常の文字列順序にソートされて出力される。
例えば、こんな感じで x -> b -> a の順に add していても、
Options options = new Options(); options.addOption( Option.builder("x").required().hasArg().argName("exe") .desc("set honyarara exe").build()); options.addOption( Option.builder("b").hasArg().argName("path") .desc("set foobar path").build()); options.addOption( Option.builder("a").hasArg().argName("addr") .desc("set hogehoge address").build()); HelpFormatter h = new HelpFormatter(); h.printHelp(72, "hoge", "", options, 2, 2, "", true);
次の通り、文字列順でソートされて表示されてしまう。
usage: hoge [-a <addr>] [-b <path>] -x <exe> -a <addr> set hogehoge address -b <path> set foobar path -x <exe> set honyarara exe
Options に add した順序を維持したい場合は、次のように HelpFormatter#setOptionComparator に null を指定すればソートされずに表示されるようになる。
HelpFormatter h = new HelpFormatter(); h.setOptionComparator(null); h.printHelp(72, "hoge", "", options, 2, 2, "", true);
usage: hoge -x <exe> [-b <path>] [-a <addr>] -x <exe> set honyarara exe -b <path> set foobar path -a <addr> set hogehoge address