Как получить параметры при использовании библиотеки командной строки Apache Commons

Я использую интерфейс командной строки Apache Commons для обработки аргументов командной строки в Java.

Я объявил параметры a и b и могу получить доступ к значению, используя CommandLine.getOptionValue().

Usage: myapp [OPTION] [DIRECTORY]

Options:
-a        Option A
-b        Option B

Как объявить и получить доступ к переменной DIRECTORY?


person Mridang Agarwalla    schedule 14.01.2011    source источник
comment
Как вы сделали HelpFormatter печать [OPTION] [DIRECTORY]?   -  person AlikElzin-kilaka    schedule 05.05.2015


Ответы (2)


Используйте следующий метод:

CommandLine.getArgList()

который возвращает все, что осталось после обработки параметров.

person Jim Garrison    schedule 14.01.2011
comment
что если количество аргументов для всех вариантов не ограничено? - person Zangdak; 02.06.2014

Может быть лучше использовать другую опцию (-d) для определения каталога, который более интуитивно понятен пользователю.

Или следующий код демонстрирует получение оставшегося списка аргументов

public static void main(final String[] args) {
    final CommandLineParser parser = new BasicParser();
    final Options options = new Options();
    options.addOption("a", "opta", true, "Option A");
    options.addOption("b", "optb", true, "Option B");

    final CommandLine commandLine = parser.parse(options, args);

    final String optionA = getOption('a', commandLine);
    final String optionB = getOption('b', commandLine);

    final String[] remainingArguments = commandLine.getArgs();

    System.out.println(String.format("OptionA: %s, OptionB: %s", optionA, optionB));
    System.out.println("Remaining arguments: " + Arrays.toString(remainingArguments));
}

public static String getOption(final char option, final CommandLine commandLine) {

    if (commandLine.hasOption(option)) {
        return commandLine.getOptionValue(option);
    }

    return StringUtils.EMPTY;
}
person Nauman    schedule 14.01.2011
comment
К этому я бы добавил, что HelpFormatter будет использоваться для печати аргумента [DIRECTORY]: HelpFormatter formatter = new HelpFormatter(); formatter.printHelp("myapp [OPTION] [DIRECTORY]", options); - person Blazes; 27.08.2014