Commons CLI API - Options with Arguments Example

Q

Where to get a Java example of managing Options with Arguments with Commons CLI API?

✍: FYIcenter.com

A

Here is good Java example of managing Options with Arguments with Commons CLI API, ShortOptionTest.java:

// Copyright (c) 2018 FYIcenter.com
import org.apache.commons.cli.Options;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.UnrecognizedOptionException;

public class ArgumentOptionTest {
   public static void main(String[] args) throws Exception {
       
      // Define a long option: --help -help -h
      Options options = new Options();
      options.addOption("h", "help", false, "Print this help message");
      
      // Define an option with argument: --input ..., -input ..., -i ...
      options.addOption("i", "input", true, "Input string");

      try {
         // Parse options
         CommandLineParser parser = new DefaultParser();
         CommandLine cmd = parser.parse(options, args);
         
         // Process options
         if (cmd.hasOption("help")) {
            help(options);
         } else if (cmd.hasOption("input")) {
            System.out.println("Hello "+cmd.getOptionValue("input"));
         }
      } catch (UnrecognizedOptionException e) {
         System.out.println("Invalid options: "+e.getOption());
         help(options);
      }
   }

   public static void help(Options options) {
      // Print options
      HelpFormatter formatter = new HelpFormatter();
      formatter.printHelp("ArgumentOptionTest", options);
   }
}

You can compile and run it with commons-cli-1.4.jar:

C:\fyicenter>javac -cp C:\fyicenter\commons-cli-1.4\commons-cli-1.4.jar ArgumentOptionTest.java

C:\fyicenter>java -cp .;C:\fyicenter\commons-cli-1.4\commons-cli-1.4.jar ArgumentOptionTest -i world
Hello world
 
C:\fyicenter>java -cp .;C:\fyicenter\commons-cli-1.4\commons-cli-1.4.jar ArgumentOptionTest -input world
Hello world
 
C:\fyicenter>java -cp .;C:\fyicenter\commons-cli-1.4\commons-cli-1.4.jar ArgumentOptionTest --input world
Hello world

C:\fyicenter>java -cp .;C:\fyicenter\commons-cli-1.4\commons-cli-1.4.jar ArgumentOptionTest --insert world

Invalid options: --insert
usage: ArgumentOptionTest
 -h,--help          Print this help message
 -i,--input <arg>   Input string 

 

Commons CLI API - Option Class

Commons CLI API - Options with Arguments

Using commons-cli.jar in Java Programs

⇑⇑ FAQ for Apache Commons CLI JAR Library

2020-05-15, 352👍, 0💬