Skip to content

cbeust/jcommander

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Dec 23, 2024
fcf0795 · Dec 23, 2024
Oct 27, 2024
Nov 30, 2024
Aug 9, 2024
Oct 27, 2024
Mar 17, 2017
Dec 23, 2024
Mar 17, 2017
Dec 8, 2019
Nov 21, 2017
Oct 27, 2024
Aug 14, 2019
Aug 8, 2024
Oct 27, 2024
Aug 9, 2024
Aug 9, 2024
Sep 26, 2016
Jan 13, 2012
Oct 27, 2024
Sep 12, 2017
Aug 6, 2010
Jul 14, 2023
Jul 5, 2012

Repository files navigation

JCommander

This is an annotation based parameter parsing framework for Java 8 (JCommander 1.x), 11 (JCommander 2.x) and 17 (JCommander 3.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")
    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(Arrays.asList("a", "b", "c"), jct.parameters);

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

Building JCommander

./gradlew assemble