Статьи

Интерфейсы командной строки Java (часть 26): CmdOption

Из этой серии статей мне стало известно о двадцать шестой представленной библиотеке на основе Java, посвященной анализу аргументов командной строки . CmdOption описывается на главной странице GitHub как «простой инструментарий анализатора командной строки на основе аннотаций для приложений Java 5+, который настраивается с помощью аннотаций». Подзаголовок проекта: «Анализ командной строки никогда не был проще».

Аннотация @CmdOption используется для аннотирования полей (или методов), которые будут содержать проанализированные аргументы командной строки. Другими словами, именно с аннотацией @CmdOption этап «определения» выполняется с помощью CmdOption. Это показано в следующем листинге кода.

Этап «Определение» с помощью CmdOption

1
2
3
4
5
@CmdOption(names={"--file","-f"}, description="File Path/Name", minCount=1, args={"filePathAndName"})
private String file;
 
@CmdOption(names={"--verbose","-v"}, description="Is verbosity enabled?", maxCount=0)
private boolean verbose;

Как и в других публикациях этой серии , в примерах, использованных в этой публикации, указаны параметры, указывающие путь и имя файла, а также уровень детализации. Полный список исходного кода для примеров списков кодов в этом посте доступен на GitHub . Как показано в приведенном выше листинге кода, имена параметров «long» (с двойным дефисом) и «short» (с одиночным дефисом) могут быть указаны с помощью @CmdOption names @CmdOption names . Элемент minCount используется для указания того, что для конкретной опции должен быть передан аргумент, а в элементе args указана строковая ссылка на аргумент опции, которая будет отображаться на экране справки / использования. Элемент maxCount имеет значение 0 для параметра многословия, поскольку для этого параметра не должно быть аргументов (достаточно наличия -v или --verbose ).

Этап «синтаксического анализа» выполняется в CmdOption путем передачи экземпляра класса с полями (или методами), аннотированными @CmdOption, в CmdlineParser класса CmdOption CmdlineParser и последующей передачей String[] представляющей аргументы командной строки, для parse(String[]) метода этого экземпляра класса CmdlineParser .

Этап «Парсинга» с помощью CmdOption

1
2
3
final Main instance = new Main();
final CmdlineParser parser = new CmdlineParser(instance);
parser.parse(arguments);

Этап «опрос» в CmdOption состоит просто в доступе к @CmdOption полям (или методам) @CmdOption в экземпляре содержащего их класса, который был передан конструктору CmdlineParser .

Этап «Допрос» в CmdOption

1
2
out.println("File path/name is '" + instance.file + "'.");
out.println("Verbosity level is " + instance.verbose);

CmdOption предоставляет механизмы, упрощающие генерацию операторов помощи или использования. Если аннотация @CmdOption включает элемент isHelp=true , CmdOption не будет проверять аргументы командной строки, если в командной строке указан параметр, связанный с isHelp=true . Это предотвращает отображение сообщений об отсутствующих обязательных параметрах или аргументах, а затем может быть вызван метод CmdlineParser.usage() , чтобы CmdOption распечатывал информацию об использовании / справке. Часть кода, демонстрирующая это, показана далее.

«Помощь» с CmdOption

1
2
3
4
5
6
7
8
9
@CmdOption(names={"--help","-h"}, description = "Display this help message", isHelp=true)
private boolean help;
 
// ...
 
if (instance.help)
{
   parser.usage(out);
}

На следующих трех снимках экрана приведенный выше код показан в действии и с использованием CmdOption. На первом изображении показаны два сообщения об ошибках: одно, когда параметры не указаны (требуется -f / --file ), и одно, когда опция «файл» указана без аргумента. Второе изображение изображает комбинации коротких и длинных названий опций. Третье изображение показывает использование, которое печатается, когда указана опция -h или --help .

Существуют характеристики CmdOption, которые следует учитывать при выборе платформы или библиотеки, чтобы помочь с анализом командной строки в Java.

  • CmdOption имеет открытый исходный код и выпускается под лицензией Apache версии 2.0 .
  • Размер файла de.tototec.cmdoption-0.5.0.jar составляет приблизительно 82 КБ и не требует сторонних зависимостей.
  • CmdOption 0.5.0 скомпилирован с «основной версией: 49» , что означает, что он совместим с приложениями J2SE 5 . Хотя в этой серии рассмотрено несколько библиотек, которые имеют аннотации, аналогичные CmdOption, в некоторых случаях эта возможность работы со старой версией Java может быть отличительной чертой.
  • CmdOption все еще поддерживается; версия, описанная в этом сообщении ( 0.5.0 ), была обновлена ​​ранее в этом месяце (9 октября 2017 года).

CmdOption — это простая в использовании библиотека для анализа параметров командной строки в Java. Он поставляется с либеральной лицензией с открытым исходным кодом и получил последние обновления.

Дополнительные ссылки

Опубликовано на Java Code Geeks с разрешения Дастина Маркса, партнера нашей программы JCG . См. Оригинальную статью здесь: Интерфейсы командной строки Java (часть 26): CmdOption

Мнения, высказанные участниками Java Code Geeks, являются их собственными.