1JCommander
2==========
3
4This is an annotation based parameter parsing framework for Java.
5
6Here is a quick example:
7
8```java
9public class JCommanderTest {
10    @Parameter
11    public List<String> parameters = Lists.newArrayList();
12 
13    @Parameter(names = { "-log", "-verbose" }, description = "Level of verbosity")
14    public Integer verbose = 1;
15 
16    @Parameter(names = "-groups", description = "Comma-separated list of group names to be run")
17    public String groups;
18 
19    @Parameter(names = "-debug", description = "Debug mode")
20    public boolean debug = false;
21
22    @DynamicParameter(names = "-D", description = "Dynamic parameters go here")
23    public Map<String, String> dynamicParams = new HashMap<String, String>();
24
25}
26```
27
28and how you use it:
29
30```java
31JCommanderTest jct = new JCommanderTest();
32String[] argv = { "-log", "2", "-groups", "unit1,unit2,unit3",
33                    "-debug", "-Doption=value", "a", "b", "c" };
34new JCommander(jct, argv);
35
36Assert.assertEquals(2, jct.verbose.intValue());
37Assert.assertEquals("unit1,unit2,unit3", jct.groups);
38Assert.assertEquals(true, jct.debug);
39Assert.assertEquals("value", jct.dynamicParams.get("option"));
40Assert.assertEquals(Arrays.asList("a", "b", "c"), jct.parameters);
41```
42
43The full doc is available at http://beust.com/jcommander
44