Статьи

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

JCLAP от Giles Winstanley ( анализатор аргументов командной строки Java ) — восемнадцатая библиотека, описанная в этой серии публикаций о библиотеках обработки командной строки на основе Java. Примеры этого поста основаны на JCLAP 1.4 , который требует Java 8 . Главная страница JCLAP гласит: «JCLAP помогает разработчикам Java создавать простые в использовании интерфейсы командной строки для своих приложений».

Этап «определения» выполняется с помощью JCLAP посредством вызова методов «add XXXXX Option» для объекта CLAParser . Пример этого поста, как и в случае с примерами из предыдущих постов этой серии, определяет два параметра командной строки, один для пути к файлу и имени и один для включения многословия. В следующем листинге кода показано, как использовать JCLAP для определения этих двух параметров командной строки (полный листинг кода доступен на GitHub ).

Этап «Определение» с JCLAP

1
2
3
4
5
final CLAParser parser = new CLAParser();
final Option<String> fileNameOption
   = parser.addStringOption("f", "file", "Path/name of the file.", 1, 1);
final Option<Boolean> verbosityOption
   = parser.addBooleanOption("v", "verbose", "Verbosity enabled?");

Список кода, только что показанный, демонстрирует, что JCLAP поддерживает длинные и короткие имена аргументов, возможность предоставить описание и возможность обозначать минимальное и максимальное количество вхождений каждого аргумента.

Этап «синтаксического анализа» реализуется через JCLAP с единственным вызовом метода CLAParser.parse (String []) , хотя этот метод вызывает выбранное исключение OptionException .

Этап «Парсинга» с JCLAP

1
parser.parse(arguments);

Этап «опрос» реализован в JCLAP по-разному, но подход, который я здесь использую, заключается в использовании одного из перегруженных методов CLAParser.getOptionValue () .

Этап «Допрос» с JCLAP

1
2
out.println("File path/name is " + parser.getOptionValue(fileNameOption));
out.println("Verbosity is " + (parser.getOptionValue(verbosityOption) != null));

JCLAP также поддерживает автоматическое создание операторов. В следующем листинге кода демонстрируется вызов одного из перегруженных методов CLAParser.printUsage () в блоке, связанном с OptionException отмеченного OptionException .

Автоматический оператор использования с JCLAP

1
2
3
4
5
catch (OptionException optionException)
{
   out.println("Exception: " + optionException);
   parser.printUsage(out, true);
}

На следующих двух снимках экрана показаны примеры кода в действии. Первый снимок экрана показывает сгенерированный JCLAP оператор использования, когда аргументы не предоставлены. Второе изображение показывает «счастливый путь», применяя длинные и короткие имена флагов для двух аргументов.

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

  • JCLAP является открытым исходным кодом с «лицензией в стиле BSD», описанной на странице проекта .
  • JAR-файл jclap-1.4.jar имеет размер около 46 КБ и не имеет сторонних библиотечных зависимостей.
  • Различные версии JCLAP предназначены для разных версий Java.
  • Автор JCLAP предложил потенциальную поддержку и исправления ошибок по запросу по электронной почте .
  • JCLAP обеспечивает некоторую поддержку интернационализации и локализации.

JCLAP (анализатор аргументов командной строки Java) — это небольшая библиотека с коммерческой лицензией, которая была обновлена ​​в последние годы для использования функций Java 8. Автор JCLAP написал на главной странице проекта, что «JCLAP отнюдь не уникален, и многие подобные утилиты доступны как бесплатно, так и на коммерческой основе». Далее автор объясняет, что «в настоящее время существует так много похожих решений, что кажется излишним иметь еще одно, но уже создав JCLAP, представляется выгодным сделать его общедоступным».

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

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

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