Javaでコマンドラインパラメーターを解析するライブラリーであるJCommanderのメモ。
|
|
JCommanderはJavaでコマンドラインパラメーター(args)を解析するライブラリー。
$ java JCommanderExample --name hishidama →パラメーターの解析を行い、--nameの値としてhishidamaを取り出す
JCommanderの使い方は、
解析結果の値を保持するクラス(JavaBeansのような感じ。POJO)を用意しておく。
パラメーター名等は、そのフィールドにアノテーションを付けることで指定する。
JCommanderはMavenリポジトリーから取得できる。
plugins { id 'java' id 'eclipse' } java { sourceCompatibility = JavaVersion.VERSION_18 targetCompatibility = JavaVersion.VERSION_18 } compileJava { options.encoding = 'UTF-8' } compileTestJava { options.encoding = 'UTF-8' } repositories { mavenCentral() } dependencies { // https://mvnrepository.com/artifact/com.beust/jcommander implementation group: 'com.beust', name: 'jcommander', version: '1.82' }
package com.example.jcommander; import com.beust.jcommander.JCommander; import com.beust.jcommander.Parameter;
public class JCommanderExample { static class Argument { @Parameter(names = { "-n", "--name" }, description = "user name") String name; }
public static void main(String... args) { var argument = new Argument(); var commander = JCommander.newBuilder() .programName("appName") .addObject(argument) .build(); // 使用方法(パラメーターの種類)表示 commander.usage(); // コマンドラインパラメーター解析 commander.parse(args); System.out.printf("name=%s%n", argument.name); } }
まず、解析したコマンドラインパラメーターを保持するクラス(この例ではArgument)を用意する。
そのクラスのインスタンスを引数としてJCommanderインスタンスを生成する。(→JCommander)
usageメソッドで使用方法を(標準出力に)表示できる。
parseメソッドでコマンドラインパラメーターの解析を行う。(Argumentのフィールドに値が設定される)
$ java -cp 〜 com.example.jcommander.JCommanderExample -n hishidama Usage: appName [options] Options: -n, --name user name name=hishidama