Из этой серии статей мне стало известно о двадцать шестой представленной библиотеке на основе 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. Он поставляется с либеральной лицензией с открытым исходным кодом и получил последние обновления.
Дополнительные ссылки
- CmdOption (GitHub)
- CmdOption в Центральном репозитории Maven
- CmdOption в репозитории MVN
- @ToToTec и @TobiasRoeser в Твиттере
Опубликовано на Java Code Geeks с разрешения Дастина Маркса, партнера нашей программы JCG . См. Оригинальную статью здесь: Интерфейсы командной строки Java (часть 26): CmdOption
Мнения, высказанные участниками Java Code Geeks, являются их собственными. |