Apache Commons CLI несколько значений аргументов в параметре -help
Я использую Apache Commons CLI для анализа аргументов командной строки.
Я ищу способ отображения нескольких имен значений аргументов в справке. Вот пример для одного аргумента опции "startimport":
Option startimport = OptionBuilder
.withArgName("environment")
.hasArg()
.withDescription(
"Description")
.create("startimport");
Когда я использую -help, он печатает:
-startimport <environment> Description
Это хорошо. Но что, если я хочу использовать два аргумента?
Option startimport = OptionBuilder
.withArgName("firstArg secondArg")
.hasArgs(2)
.withDescription("Description")
.create("startimport ");
Синтаксический анализ двух аргументов не является проблемой, но я хочу следующий вывод в "-help":
startimport <firstArg> <secondArg> Description
Но в настоящее время я бы просто получил:
startimport <firstArg secondArg> Description
Есть ли правильное решение этой проблемы?
2 ответа
Я использовал непослушный способ решить эту проблему.
OptionBuilder.hasArgs(3);
OptionBuilder.withArgName("hostname> <community> <oid");
OptionBuilder.withDescription("spans switch topology. Mutually exclusive with -s");
Option my_a = OptionBuilder.create("a");
Теперь он правильно отображается в справке. Хотя я не уверен, если это имеет последствия, хотя.
Я нашел способ решить эту проблему таким образом, чтобы он вел себя правильно, и подумал, что поделюсь им, потому что это одна из страниц, которую Google привел мне во время исследования. Этот код был написан с использованием Commons CLI 1.2.
Option searchApp = OptionBuilder.withArgName("property> <value")
.withValueSeparator(' ')
.hasArgs(2)
.withLongOpt("test")
.withDescription("This is a test description.")
.create("t");
Справочное сообщение выглядит так:
-t,--test <property> <value> This is a test description.
Его можно использовать из командной строки следующим образом:
java -jar program.jar -t id 5
и String[] аргументов может быть получен в коде так:
Options options = new Options();
options.addOption(searchApp);
PosixParser parser = new PosixParser();
CommandLine cmd = parser.parse( options, args);
String[] searchArgs = cmd.getOptionValues("t");
Затем вы можете получить значения с searchArgs[0]
а также searchArgs[1]
,