В этом двадцать первом посте этой серии, посвященном анализу аргументов командной строки в Java, рассматривается библиотека Airline 2 . На странице проекта GitHub для Airline 2 описывается библиотека: «Airline — это библиотека Java, предоставляющая основанную на аннотациях среду для анализа интерфейсов командной строки». Страница переходит в состояние, в котором «Авиакомпания« поддерживает обе простые одиночные команды вплоть до сложных интерфейсов в стиле git с группами ». На этой странице также определяются отношения Airline 2 с оригинальной библиотекой Airline : «Это существенно переписанный оригинал библиотеки авиакомпании ». Именно Авиакомпания 2.3.0, которая показана в этом посте.
Примеры в этом посте будут аналогичны тем, которые демонстрировались в предыдущих статьях этого цикла об альтернативных библиотеках для анализа аргументов командной строки из Java. Таким образом, параметры, поддерживаемые в этих примерах, будут указывать путь и имя файла, а также спецификацию того, следует ли включать многословие. Полный список кодов для примеров, показанных здесь, доступен на GitHub.
Этап «определения» парсинга аргументов командной строки из Java с помощью Airline 2 легко выполняется с помощью аннотаций @Option, как показано в следующем листинге кода.
Этап «Определение» с авиакомпанией 2
1
2
3
4
5
|
@Option (title= "file" , name={ "-f" , "--file" }, description= "Path and name of file." ) private String file; @Option (title= "verbose" , name={ "-v" , "--verbose" }, description= "Enable or disable verbosity." ) private boolean verbose; |
Код для этих экземпляров аннотаций @Option
достаточно @Option
. Элемент « name
» аннотации @Option
ожидает одну или несколько String
и, таким образом, позволяет указывать несколько флагов для одной и той же опции. В этом случае я использовал одинаковые «короткие» формы с одним дефисом / одним символом и «длинные» формы с двумя дефисами / словом для опций.
Этап «синтаксического анализа» может быть выполнен с помощью Airline 2 с использованием класса SingleCommand и его статического метода singleCommand (Class <C>) для получения экземпляра SingleCommand
и последующего вызова метода parse (String []) для этого экземпляра. Эти два утверждения продемонстрированы в следующем листинге кода.
Этап «Разбор» с авиакомпанией 2
1
2
|
final SingleCommand<Main> parser = SingleCommand.singleCommand(Main. class ); final Main main = parser.parse(arguments); |
Этап «допроса» в Airline 2 выполняется простым доступом к @Option
@Option полям экземпляра, предоставленного методом SingleCommand.parse(String[])
. Это продемонстрировано в следующем листинге кода.
Этап «Допрос» с авиакомпанией 2
1
2
3
4
5
6
7
8
9
|
if (main.file != null ) { out.println( "File path/name is '" + main.file + "'." ); out.println( "Verbosity is " + main.verbose); } else { out.println( "ERROR: File path/name must be provided with -f or --file." ); } |
На следующих двух снимках экрана показаны примеры в действии. Первый снимок экрана показывает выходные данные, когда аргументы не предоставлены, а второе изображение показывает «нормальное» использование длинных и коротких версий двух опций для указания пути / имени файла и многословия.
Авиакомпания поставляется с поддержкой для создания использования и справочной информации. К сожалению, мне не удалось заставить его работать на меня, потому что я столкнулся с ошибкой компиляции, которая гласила: «файл класса для com.github.rvesse.airline.io.printers.UsagePrinter not found». Я не вижу этот класс в airline-2.3.0.jar
я скачал.
Есть характеристики Airline 2, которые следует учитывать при выборе платформы или библиотеки, чтобы помочь с анализом командной строки в Java.
- Авиакомпания 2 имеет открытый исходный код и лицензируется под лицензией Apache, версия 2.0 .
- «Авиакомпания 2» — это одна из «более весомых» библиотек, описанных в этой серии, в которой авиакомпания авиакомпания-2.3.0 имеет размер приблизительно 316 КБ и имеет зависимости во время выполнения от коллекций Apache Commons , Apache Commons Lang и javax.inject / javax.inject. ,
- Хотя Airline существует уже некоторое время, Airline 2 — это совсем недавно обновленная версия этого проекта.
- Документация по основному использованию Airline 2 проста и полезна, но документация по многим функциям, не показанным в этом посте, все еще находится в стадии разработки с многочисленными заявлениями «TODO».
Airline 2 прост в использовании для обработки аргументов в стиле «одной команды», реализованной в моих примерах в этих постах. Я не видел какого-либо метода для выражения того, требуется ли опция, но простая проверка на наличие null
для требуемой опции перед продолжением является простым подходом для этого. Учитывая свой размер и зависимости, Airline 2, вероятно, лучше всего подходит для тех, кто хочет использовать многие из своих мощных функций, не продемонстрированных в этом посте. Для простых примеров, продемонстрированных в этом и других постах этой серии, существуют более легкие библиотеки с меньшим количеством зависимостей, которые очень похожи на Airline 2 с точки зрения выражения этапов «определение», «анализ» и «опрос».
Дополнительные ссылки
- Авиакомпания 2 (GitHub)
- Руководство пользователя авиакомпании
- Авиакомпания 2.3.0 (Репозиторий Maven)
- Документация API Airline 2.3.0 (Javadoc)
- Оригинальная авиакомпания
Опубликовано на Java Code Geeks с разрешения Дастина Маркса, партнера нашей программы JCG . См. Оригинальную статью здесь: Интерфейсы командной строки Java (часть 21): Авиакомпания 2
Мнения, высказанные участниками Java Code Geeks, являются их собственными. |