Argparser Джона Ллойда — это библиотека, описанная в этом двадцать втором посте из серии, посвященной анализу аргументов командной строки на основе Java. На главной странице библиотеки есть ссылки на документацию API на основе Javadoc, файл JAR, файл ZIP и файл TAR в дополнение к одному примеру исходного кода. Пример, использованный в этом посте, аналогичен примерам, использованным в первых двадцати одном посте этой серии, и обрабатывает параметры пути / имени файла и многословия. Полный список кодов доступен на GitHub .
Этап «определения» выполняется в argparser с экземплярами классов «Holder», представляющими ожидаемые параметры, которые передаются методу addOption (String, Object) экземпляра ArgParser . Это продемонстрировано в следующем листинге кода.
Этап «Определение» с argparser
1
2
3
4
5
6
|
final StringHolder file = new StringHolder(); final BooleanHolder verbose = new BooleanHolder(); final ArgParser parser = new ArgParser( "java examples.dustin.commandline.argparser.Main" ); parser.addOption ( "-f,--file %s #Path and name of file" , file); parser.addOption ( "-v,--verbose %v #Verbosity enabled?" , verbose); |
Многие из библиотек, рассматриваемых в этой серии при разборе аргументов командной строки из Java, имеют характеристики опций, явно прописанные с отдельными параметрами, отдельными методами или отдельными элементами аннотаций. Как показано в листинге кода, вместо этого argparser имеет атрибуты опции, изложенные в строке «спецификации», которую argparser анализирует.
Этап «синтаксического анализа» выполняется в argparser путем передачи String[]
с аргументами командной строки в метод matchAllArgs (String []) класса ArgParser . Это единственное утверждение показано в следующем листинге кода.
Этап «Парсинга» с argparser
1
|
parser.matchAllArgs(arguments); |
Этап «опрос» выполняется в argparser путем доступа к public
полю « value » в соответствующих классах «Holder». Это показано в следующем листинге кода.
Этап «Допрос» с argparser
1
2
|
out.println( "File path/name is: " + file.value); out.println( "Verbosity is: " + verbose.value); |
Библиотека argparser также поддерживает сообщение «help» / «using». Это продемонстрировано в следующем листинге кода, в котором записано использование, если не указана опция «file» (если ее «value» равно null
).
«Использование» с argparser
1
2
3
4
5
|
if (file.value == null ) { out.println( "ERROR: File path/name was not specified! Use -f or --file to specify file path/name.\n" + parser.getHelpMessage()); } |
Снимки экрана, показанные ниже, демонстрируют примеры, описанные в этом посте. На первом изображении показано «использование», предоставляемое argparser, когда не указана необходимая опция «file». Второе изображение показывает использование длинных и коротких имен опций.
Есть характеристики argparser, которые следует учитывать при выборе фреймворка или библиотеки, чтобы помочь с анализом командной строки в Java.
- Arparser с открытым исходным кодом. Мне не ясно, лицензировано ли это по какой-либо конкретной лицензии, но есть файл
COPYRIGHT
включенный в JAR, который гласит: «Copyright John E. Lloyd, 2004. Все права защищены. Разрешение на использование, копирование, изменение и повторное распространение предоставляется при условии, что это уведомление об авторском праве сохраняется и автор получает кредит в случае необходимости ». Существует также стандартный отказ от ответственности за программное обеспечение, распространяемое «как есть». - Размер файла argparser.jar составляет приблизительно 129 КБ, но включает файлы исходного кода
.java
, скомпилированные файлы.class
и файлы HTML Javadoc. - Javadoc для класса argparser.ArgParser превосходен и является примером того, что я хотел бы регулярно видеть в Javadoc для «основных» классов библиотек на основе Java. Это хороший пример того, как небольшой проект с открытым исходным кодом может документировать проект / библиотеку один раз, потому что Javadoc класса также используется и ссылается на главную страницу проекта . Этот Javadoc уровня класса даже включает исходный код
SimpleExample
(который также находится в распределенном файле JAR) для примера того, как использовать класс и библиотеку. - Поскольку argparser скомпилирован с « основной версией: 46 », он должен работать с версией Java такой же старой, как JDK 1.2 !
Библиотека argparser небольшая и простая в использовании. Это, вероятно, больше всего понравится тем, кто хочет, чтобы небольшая библиотека выполняла базовую обработку командной строки, и особенно понравится всем, кто все еще может использовать свой код обработки командной строки на основе Java в старых версиях JDK. Пара вещей, которые отличают эту библиотеку от многих других, рассматриваемых в этой серии, — это превосходная документация API на основе Javadoc и подход к спецификации строк для характеристик опций.
Дополнительные ссылки
Опубликовано на Java Code Geeks с разрешения Дастина Маркса, партнера нашей программы JCG . См. Оригинальную статью здесь: Интерфейсы командной строки Java (часть 22): argparser
Мнения, высказанные участниками Java Code Geeks, являются их собственными. |