Java プログラムメモ


トップ

Commons CLI で引数解析

CLI(Command Line Interface) は、Java アプリケーションのコマンドライン引数を解析してくれるライブラリです。 Usage なども簡単に出力出来るようにしてくれるのでとても便利です。

コマンドラインの parser には BasicParser,PosixParser,GnuParser があります。基本的には BasicParser を使用するのですが、 PosixParser を使用すれば、Unix のようにまとめて引数を指定することが可能です。

usage: CLITest [-d] [-?] [-f format] -? show help -d debug -f <format> output format
このようなコマンドが合った場合、
  • BasicParser - -d -f yyyymmdd と指定しなければならない
  • PosixParser - -df yyyymmdd と指定可能

ソース記述例

import java.text.*; import java.util.*; import org.apache.commons.cli.*; import org.apache.commons.cli.ParseException; public class CLITest { public void execute(String[] args) { Options options = createOptions(); CommandLineParser parser = new BasicParser(); try { CommandLine comLine = parser.parse(options, args); if (comLine.hasOption("?")) { showUsage(options); System.exit(0); } DateFormat df; if (comLine.hasOption("f")) { df = new SimpleDateFormat(comLine.getOptionValue("f")); } else { df = DateFormat.getDateInstance(); } if (comLine.hasOption("d")) { System.out.println("debug"); } System.out.println(df.format(new Date())); } catch (ParseException e) { showUsage(options); System.exit(-1); } } private Options createOptions() { Options options = new Options(); OptionBuilder.withArgName("format"); OptionBuilder.hasArg(); OptionBuilder.withDescription("output format"); options.addOption(OptionBuilder.create("f")); options.addOption("?", false, "show help"); options.addOption("d", false, "debug"); return options; } private void showUsage(Options options) { HelpFormatter formatter = new HelpFormatter(); formatter.printHelp(getClass().getName(), options, true); } public static void main(String[] args) { new CLITest().execute(args); } }

実行結果

$ java CLITest 2004/01/01 $ java CLITest -? usage: CLITest [-d] [-?] [-f format] -? show help -d debug -f <format> output format $ java CLITest -f "yyyy/MM/dd HH:mm:ss.SSS" 2004/01/01 12:01:25.859


プログラムメモ アフリカ雑貨や農作物のセレクトショップ - はろの屋 マゴソスクール クラウドファンディング
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送