commons-CLI: GNU, POSIX and Java-style command-line options syntax
The Apache Commons CLI
http://commons.apache.org/cli/ – библиотека Apache Commons CLI предоставляет интерфейс (API) для разбора параметров командной строки, передаваемых программе при запуске, а также для печати информации о возможных параметрах запуска.
Оказывается, существует несколько вариантов синтаксиса передаваемых программе параметров:
- 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)
Библиотека Commons CLI поддерживает все пять вариантов.
POSIX
Пользуясь широкими возможностями пакета commons-cli, нужно помнить: использование аргументов командной строки может привести к тому, что разрабатываемая программа перестанет быть портируемой (т.е. не будет Java-программой на все 100%)!
Для обеспечения совместимости и переносимости программ, использующих аргументы командной строки, рекомендуется придерживаться стандартных соглашений POSIX о синтаксисе параметров:
- An option is a hyphen followed by a single alphanumeric character, like this:
-o.- An option may require an argument (which must appear immediately after the option); for example,
-o argumentor-oargument.- Options that do not require arguments can be grouped after a hyphen, so, for example,
-lstis equivalent to-t -l -s.- Options can appear in any order; thus
-lstis equivalent to-tls.- Options can appear multiple times.
- Options precede other nonoption arguments:
-lst nonoption.- The
--argument terminates options.- The
-option is typically used to represent one of the standard input streams.
Полностью POSIX-совместимыми являются такие операционные системы как AIX, HP-UX, MacOS X 10.5, MINIX, QNX, Solaris/OpenSolaris и др.(полный список).
Частично совместимые – FreeBSD, Linux (особенно использующие LSB), NetBSD, OpenBSD и др.(полный список).
Подробности
- http://www.gnu.org/manual/gawk/html_node/Options.html – GNU-параметры на примере консольной утилиты Awk
- PosixParser и GnuParser в библиотеке Commons CLI
Выбрать парсер достаточно просто:
[code lang="java"]
CommandLineParser parser = new PosixParser();
CommandLine cmd = parser.parse( options, args);
[/code]

