Skip to content

About

Command line parsing framework for Java

Resources

Security policy

Stars

2.0k stars

Watchers

58 watching

Forks

Repository files navigation

JCommander

This is an annotation based parameter parsing framework for Java 8 (JCommander 1.x), 11 (JCommander 2.x), 17 (JCommander 3.x) and 21 (JCommander 4.x).

Here is a quick example:

public class JCommanderTest {
    @Parameter
    public List<String> parameters = Lists.newArrayList();
 
    @Parameter(names = { "-log", "-verbose" }, description = "Level of verbosity")
    public Integer verbose = 1;
 
    @Parameter(names = "-groups", description = "Comma-separated list of group names to be run"
                    placeholder = "<group1>,<group2>...")
    public String groups;
 
    @Parameter(names = "-debug", description = "Debug mode")
    public boolean debug = false;

    @DynamicParameter(names = "-D", description = "Dynamic parameters go here")
    public Map<String, String> dynamicParams = new HashMap<String, String>();

}

and how you use it:

JCommanderTest jct = new JCommanderTest();
String[] argv = { "-log", "2", "-groups", "unit1,unit2,unit3",
                    "-debug", "-Doption=value", "a", "b", "c" };
JCommander.newBuilder()
  .addObject(jct)
  .build()
  .parse(argv);

Assert.assertEquals(2, jct.verbose.intValue());
Assert.assertEquals("unit1,unit2,unit3", jct.groups);
Assert.assertEquals(true, jct.debug);
Assert.assertEquals("value", jct.dynamicParams.get("option"));
Assert.assertEquals(List.of("a", "b", "c"), jct.parameters);

The full doc is available at https://jcommander.org.

Building JCommander

./gradlew assemble

About

Command line parsing framework for Java

Resources

Security policy

Stars

2.0k stars

Watchers

58 watching

Forks

Releases

Packages

Used by

Contributors

Languages