Which command line arguments parser supports these requirements?
From the limited information in your question the following appear to match your needs.
JOpt Simple
JOpt Simple is a Java library for parsing command line options, such
as those you might pass to an invocation of javac.
In the interest of striving for simplicity, as closely as possible
JOpt Simple attempts to honor the command line option syntaxes of
POSIX getopt() and GNU getopt_long(). It also aims to make
option parser configuration and retrieval of options and their
arguments simple and expressive, without being overly clever.
The JOpt Simple web page also lists a number of other Java Commandline Parsers which may also be suitable if JOpt Simple is not sophisticated enough for you:
Here are some libraries that perform the same duties as JOpt Simple:
JArgs
Jakarta Commons CLI
TE-Code has a command line parsing library.
argparser
Java port of GNU getopt
Args4J
JSAP
CLAJR
CmdLn
JewelCli
JCommando
parse-cmd
JCommander
plume-lib Options
The website contains links for the above if you want to investigate them further.
Source JOpt Simple
Apache Commons CLI
The Apache Commons CLI library provides an API for parsing command
line options passed to programs. It's also able to print help messages
detailing the options available for a command line tool.
Commons CLI supports different types of options:
- POSIX like options (ie. tar -zxvf foo.tar.gz)
- GNU like long options (ie. du --human-readable --max-depth=1)
- Java like properties (ie. java -Djava.awt.headless=true -Djava.net.useSystemProxies=true Foo)
- Short options with value attached (ie. gcc -O2 foo.c)
- long options with single hyphen (ie. ant -projecthelp)
A typical help message displayed by Commons CLI looks like this:
usage: ls
-A,--almost-all do not list implied . and ..
-a,--all do not hide entries starting with .
-B,--ignore-backups do not list implied entried ending with ~
-b,--escape print octal escapes for nongraphic characters
--block-size <SIZE> use SIZE-byte blocks
-c with -lt: sort by, and show, ctime (time of last
modification of file status information) with
-l:show ctime and sort by name otherwise: sort
by ctime
-C list entries by columns
Source Apache Commons CLI