import com.beust.jcommander.Parameter;
public class JCommanderTest {
  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;

Recently, I got tired of having to handle command line parsing manually. I took a look at existing frameworks and all the ones that I found (JOpts, JArgs, commons-cli) suffered from the same limitations that I was trying to avoid: they barely cut down on the boiler plate code and they are not very type safe.
So I came up with my own framework, which I called JCommander.
The snippet of code above should give you a pretty good idea of what JCommander looks like, and if you need more information, just head over to the main site. I have already integrated JCommander in TestNG and it has already reduced the code base to handle this simple task significantly.
Let me know what you think.