【Java】コマンドライン引数のパーサー [2] ~ args4j 編 ~

■ はじめに

https://blogs.yahoo.co.jp/dk521123/37206429.html
の続き。今回は「args4j」。
個人的には、こっちの方が使いやすい。


■ サンプル

import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.Option;

public class ServiceConfig {
  @Option(name = "-p", aliases="--port", required=false, usage="Port")
  private int port;
  
  @Option(name = "-t", aliases="--threads", required=false, usage="Max Threads")
  private int maxThreads;
  
  @Option(name="-d", aliases="--debug", required=false, usage="debug option")
  private boolean isDebug;
 
  @Option(name="-h", aliases="--help", required=false, usage="debug option")
  private boolean hasHelp;
 
  public int getPort() {
    return this.port;
  }
  public void setPort(int port) {
    this.port = port;
  }
  
  public int getMaxThreads() {
    return this.maxThreads;
  }
  public void setMaxThreads(int maxThreads) {
    this.maxThreads = maxThreads;
  }
  
  public boolean isDebug() {
    return this.isDebug;
  }
  public void setDebug(boolean isDebug) {
    this.isDebug = isDebug;
  }
  
  public static void main(String[] args) {
    ServiceConfig serviceConfig = new ServiceConfig();
    String[] args1 = {"-p", "18080", "-t", "10", "--debug"};
    CmdLineParser parser = new CmdLineParser(serviceConfig);
    try {
      parser.parseArgument(args1);
    } catch (CmdLineException ex) {
      ex.printStackTrace();
      return;
    }
    
    parser.printSingleLineUsage(System.out);
    System.out.println();
    parser.printUsage(System.out);
    System.out.println();
    
    System.out.println("Port:" + serviceConfig.getPort());
    System.out.println("MaxThreads:" + serviceConfig.getMaxThreads());
    System.out.println("Debug:" + serviceConfig.isDebug);
  }
}
出力結果
 [-d (--debug)] [-p (--port) N] [-t (--threads) N]
 -d (--debug)     : debug option (default: true)
 -p (--port) N    : Port (default: 18080)
 -t (--threads) N : Max Threads (default: 10)

Port:18080
MaxThreads:10
Debug:true


関連記事

Javaコマンドライン引数のパーサー [1] ~ Apache Commons CLI 編 ~

https://blogs.yahoo.co.jp/dk521123/37206429.html