JSAP ( Java Simple Argument Parser ) 2.1 — это двадцатый пост в этой серии, посвященный обработке аргументов командной строки из Java. На странице JSAP описана причина существования библиотеки: «Я нашел в Интернете несколько анализаторов, каждый из которых обрабатывал коммутаторы, но ни один из них не обладал той универсальностью, которую я хотел в плане типов возвращаемых данных и файлов конфигурации».
JSAP предлагает немного гибкости при обычных затратах некоторой сложности. К счастью, JSAP предоставляет класс SimpleJSAP, который облегчает выполнение простых задач с помощью JSAP. Документация JSAP формулирует это следующим образом : «Если вы хотите минимизировать объем кода, обрабатывающего командную строку, JSAP предлагает SimpleJSAP, который выполняет большую часть работы за вас». Следующий листинг кода демонстрирует использование SimpleJSAP
в одном (хотя и многословном) операторе для определения ожидаемых параметров командной строки.
Этап «Определение» с JSAP
1
2
3
4
5
6
|
final SimpleJSAP jsap = new SimpleJSAP( "Main Application" , "Demonstrate JSAP" , new Parameter[] { new FlaggedOption( "file" , STRING_PARSER, NO_DEFAULT, REQUIRED, 'f' , "file" , "File path/name." ), new Switch( "verbose" , 'v' , "verbose" , "Requests verbose output." )}); |
В приведенном выше листинге кода я использовал статический импорт, чтобы уменьшить детализацию этого «определения» кода. Это можно увидеть в полном списке кодов, доступных на GitHub . Приведенный выше код определяет две опции, которые используются во всех публикациях их серий о библиотеках, используемых для анализа аргументов командной строки в Java: путь к файлу / имя и многословность. Одиночные символы 'f'
и 'v'
являются короткими именами опций, а длинные имена опций следуют за ними в соответствующих вызовах ( file
и verbose
). Обратите внимание, что «определение» аргументов командной строки также может быть настроено с помощью XML , хотя здесь это не демонстрируется.
Этап «синтаксического анализа» выполняется в JSAP с помощью одного отдельного оператора, в котором вызов метода parse (String []) для экземпляра SimpleJSAP
возвращает экземпляр JSAPResult .
Этап «Парсинга» с JSAP
1
|
final JSAPResult parsedResult = jsap.parse(arguments); |
Стадия «опроса» в JSAPResult
выполняется с помощью вызова экземпляра JSAPResult
возвращаемого методом parse
как показано в следующем листинге кода.
Этап «Допрос» с JSAP
1
2
|
out.println( "File path/name is '" + parsedResult.getString( "file" ) + "'." ); out.println( "Verbosity level is " + parsedResult.getBoolean( "verbose" )); |
JSAP сгенерирует автоматические операторы использования и справки . В следующем листинге кода демонстрируется использование метода SimpleJSAP.messagePrinted () для определения того, произошла ли какая-либо ошибка синтаксического анализа, а затем использование сообщения SimpleJSAP.getHelp () для доступа к автоматически сгенерированному сообщению «помощь».
«Помощь» с JSAP
1
2
3
4
5
|
if (jsap.messagePrinted()) { out.println(jsap.getHelp()); System.exit( - 1 ); } |
Следующие два снимка экрана демонстрируют выполнение примеров кода, показанных в этом посте, с использованием JSAP. Первое изображение изображает оператор использования, напечатанный, когда не --file
флаг -f
/ --file
. Второе изображение изображает нормальное поведение примера кода на основе JSAP.
Есть характеристики JSAP, которые следует учитывать при выборе платформы или библиотеки, чтобы помочь с анализом командной строки в Java.
- JSAP имеет открытый исходный код и лицензируется Общественной лицензией Lesser GNU (LPGL).
- JAR-файл JSAP-2.1.jar имеет размер приблизительно 68 КБ и не требует сторонних зависимостей для основных функций.
- Возможность загрузки конфигураций JSAP из XML (не описанная в этом посте) требует XStream .
- В Руководстве по JSAP более подробно обсуждается, почему JSAP был написан, когда есть другие альтернативы синтаксического анализа командной строки для Java.
- JSAP используется другими продуктами , получил одобрение нескольких пользователей и используется в Groovy вместо встроенного Apache Commons CLI .
JSAP, кажется, является одной из самых популярных из старых библиотек синтаксического анализа на основе Java. Он относительно прост в использовании для базовой функциональности, подобной продемонстрированной в этом посте, но также предлагает дополнительную гибкость и настраиваемость для более сложных нужд.
Дополнительные ресурсы
- JSAP v2.1: простой синтаксический анализатор Java
- JSAP на SourceForge
- JSAP — Java Simple Argument Parser (v2.1) Руководство
- JSAP на MvnRepository
- Документация по JSAP API (Javadoc)
- Разбор аргументов командной строки — JSAP
- Разбор аргументов командной строки для Groovy (с JSAP)
Опубликовано на Java Code Geeks с разрешения Дастина Маркса, партнера нашей программы JCG . См. Оригинальную статью здесь: Интерфейсы командной строки Java (часть 20): JSAP
Мнения, высказанные участниками Java Code Geeks, являются их собственными. |