今回はコマンドライン引数の解析です。
Apache CommonsのCommandLineを使えば、コマンドライン引数に関するいろいろな操作ができます。
Apache Commonsの入手
mavenを使って入手
pom.xmlは、こんな感じ。
今回はファイル操作なので、Apache Commonsの中でも「Apache Commons CLI」が対象。
1 2 3 4 5 6 | <!-- https://mvnrepository.com/artifact/commons-cli/commons-cli --> <dependency> <groupId>commons-cli</groupId> <artifactId>commons-cli</artifactId> <version>1.5.0</version> </dependency> |
手動で入手
手動で入手するのであれば、以下のjarを入手することになります。
「Apache Commons IO」は依存関係がないので、手動でも簡単に手に入れられますね。
https://mvnrepository.com/repos/central
- commons-cli-1.5.0.jar
※2023年6月現在です。
ちなみに、Apache License 2.0で提供されています。
Apache CommonsのCommandLineを使ってコマンドライン引数を解析するサンプル
Apache Commons CLIを使ってコマンドライン引数を解析します。
引数に”-h”または”–help”(ヘルプ)を指定した場合は、ヘルプを表示。以外は、”m”または”–mode”(モード)の内容を表示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.DefaultParser; import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; public class CommandLineTest { public static void main(String[] args) { //オプションの定義 Options options = new Options(); options.addOption("h", "help", false, "ヘルプ"); options.addOption("m", "mode", true, "モード(0:NORMAL 1:DEBUG)"); CommandLineParser parser = new DefaultParser(); HelpFormatter formatter = new HelpFormatter(); try { //引数の解析 CommandLine cmd = parser.parse(options, args); //ヘルプの場合、ヘルプを表示 if (cmd.hasOption("h")) { formatter.printHelp("CommandLineTestの使い方", options); return; } //モードの取得 String mode = cmd.getOptionValue("m"); System.out.println("モード: " + mode); } catch (ParseException e) { e.printStackTrace(); } } } |
実行結果
コマンドライン引数に応じた内容が表示されます。
“-h”を引数に指定した場合は、こんな感じ。
1 2 3 | usage: CommandLineTestの使い方 -h,--help ヘルプ -m,--mode <arg> モード(0:NORMAL 1:DEBUG) |
“-m 0″を引数に指定した場合は、こんな感じ。
1 | モード: 0 |
サンプルの解説
DefaultParser(CommandLineParser)を使って、コマンドライン引数を解析。
解析した結果は、CommandLineから取得ができます。