Вопрос-ответ

How do I parse command line arguments in Java?

Как мне проанализировать аргументы командной строки в Java?

Какой хороший способ анализа аргументов командной строки в Java?

Переведено автоматически
Ответ 1

Проверьте это:

Или создайте свой собственный:


Например, это то, как вы используете commons-cli для анализа двух строковых аргументов:

import org.apache.commons.cli.*;

public class Main {


public static void main(String[] args) throws Exception {

Options options = new Options();

Option input = new Option("i", "input", true, "input file path");
input.setRequired(true);
options.addOption(input);

Option output = new Option("o", "output", true, "output file");
output.setRequired(true);
options.addOption(output);

CommandLineParser parser = new DefaultParser();
HelpFormatter formatter = new HelpFormatter();
CommandLine cmd = null;//not a good practice, it serves it purpose

try {
cmd = parser.parse(options, args);
} catch (ParseException e) {
System.out.println(e.getMessage());
formatter.printHelp("utility-name", options);

System.exit(1);
}

String inputFilePath = cmd.getOptionValue("input");
String outputFilePath = cmd.getOptionValue("output");

System.out.println(inputFilePath);
System.out.println(outputFilePath);

}

}

использование из командной строки:

$> java -jar target/my-utility.jar -i asd                                                                                       
Missing required option: o

usage: utility-name
-i,--input <arg> input file path
-o,--output <arg> output file
Ответ 2

Взгляните на более свежий JCommander.

Я создал это. Я рад получать вопросы или пожелания по функциям.

Ответ 3
Ответ 4

На дворе 2022 год, пора сделать лучше, чем Commons CLI ... :-)


Следует ли вам создать свой собственный анализатор командной строки Java или использовать библиотеку?

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

Picocli - это современная библиотека и фреймворк для простого создания мощных, удобных в использовании приложений командной строки с поддержкой GraalVM. Он находится в 1 исходном файле, поэтому приложения могут включать его в качестве исходного, чтобы избежать добавления зависимости.

Он поддерживает цвета, автозаполнение, подкоманды и многое другое. Написан на Java, может использоваться в Groovy, Kotlin, Scala и др.

Минимальная справка по использованию цветов ANSI

Характеристики:


  • Основанный на аннотациях: декларативный, позволяет избежать дублирования и выражает намерения программиста

  • Удобно: проанализируйте пользовательский ввод и запустите свою бизнес-логику с помощью одной строки кода

  • Строго типизированное все - параметры командной строки, а также позиционные параметры

  • Короткие параметры кластеризации POSIX (<command> -xvfInputFile а также <command> -x -v -f InputFile)

  • Детализированное управление: модель arity, которая допускает минимальное, максимальное и переменное количество параметров, например, "1..*", "3..5"

  • Подкоманды (могут быть вложены на произвольную глубину)

  • Многофункциональность: составные группы аргументов, разделение аргументов в кавычках, повторяющиеся подкоманды и многое другое

  • Удобство для пользователя: в сообщении справки по использованию используются цвета для выделения важных элементов, таких как названия опций, из остальной части использования, что помогает снизить когнитивную нагрузку на пользователя

  • Распространяйте свое приложение как собственный образ GraalVM

  • Работает с Java 5 и выше

  • Обширная и скрупулезная документация

Справочное сообщение по использованию легко настроить с помощью аннотаций (без программирования). Например:

Расширенное справочное сообщение по использованию (Источник)

Я не смог удержаться, чтобы не добавить еще один скриншот, чтобы показать, какие сообщения справки по использованию возможны. Справка по использованию - это лицо вашего приложения, так что проявите творческий подход и получайте удовольствие!

демонстрация picocli

Отказ от ответственности: я создал picocli. Обратная связь или вопросы очень приветствуются.

java