Библиотека Rop описана на ее главной странице как «облегченный анализатор параметров командной строки, написанный на Java». «Введение» в Rop также гласит: «Rop спроектирован так, чтобы быть минимальным и в то же время удобным и охватывать большинство обычных случаев использования синтаксического анализа командной строки» Этот пост является двадцать третьим в этой серии, посвященном анализу аргументов командной строки в Java, и посвящен Rop.
Как и двадцать два поста в этой серии до этого, в этом посте используются примеры, реализующие два параметра командной строки, один для пути к файлу и имени и один для уровня многословия. Полный код, приведенный в примере, доступен на GitHub .
Этап «определение» выполняется в Rop с помощью аннотаций @Command
и @Option
(оба они вложены в класс com.github.ryenus.rop.OptionParser
). Это показано в следующем листинге кода.
Этап «Определение» с Rop
01
02
03
04
05
06
07
08
09
10
11
12
|
/** * Demonstrates use of Rop for processing command line * parameters in Java. */ @Command (name= "RopDemo" , descriptions= "Demonstrates ROP for command line processing." ) public class Main { @Option (opt={ "-f" , "--file" }, description= "Path and name of file." ) private String file; @Option (opt={ "-v" , "--verbose" }, description= "Indicates whether verbosity is enabled or not." ) private boolean verbose; |
Этап «синтаксического анализа» выполняется в Rop путем создания экземпляра экземпляра OptionParser
и передачи ему определения класса, поля которого были аннотированы на этапе «определения». Это показано в следующем листинге кода.
«Парсинг» этап с Rop
1
2
|
final OptionParser parser = new OptionParser(Main. class ); parser.parse(arguments); |
Метод OptionParser.parse(Class)
неявно вызывает (через отражение) метод с именем «run» в экземпляре, предоставленном парсеру при его создании. Я реализовал этот метод «run», как показано в следующем листинге кода.
Этап «Допрос» с Rop (включая метод «бег»)
01
02
03
04
05
06
07
08
09
10
|
/** * Method called implicitly by Rop parser. * * @param parser Instance of {@code OptionParser} whose * "parse" method led to my implicit invocation. */ private void run( final OptionParser parser) { out.println( "File path/name is " + file + " and verbosity is " + verbose); } |
В приведенном выше листинге метода «run» демонстрируется «опрос», который осуществляется путем доступа к аннотированным полям @Option, которые были заполнены OptionParser.parse(String[])
.
На следующих трех снимках экрана показаны этапы «определения», «анализа» и «опроса», выполненные с помощью Rop. Первое изображение указывает на сообщение об ошибке, которое отображается, когда не указана требуемая опция «файл». Второе изображение показывает нормальное поведение примера, который обрабатывает комбинации коротких и длинных имен опций «файл» и «подробный». На третьем изображении показана встроенная поддержка Rop «помощи», которая отображается, когда указана опция --help
.
Есть характеристики Rop, которые следует учитывать при выборе платформы или библиотеки, чтобы помочь с анализом командной строки в Java.
- Rop с открытым исходным кодом с лицензией MIT .
- Rop, как рекламируется, легкий; Размер файла rop-1.1.1.jar составляет около 18 КБ и не требует сторонних зависимостей.
- Классы в
rop-1.1.1.jar
имеют «главную версию: 51», что означает, что Java SE 7 требуется при использовании этих скомпилированных классов.
Rop — это легкая библиотека на основе Java для обработки параметров командной строки, которая проста в освоении и использовании.
Дополнительные ссылки
- Rop Главная страница
- ryenus / rop (GitHub)
- Rop 1.1.1 (Maven)
Опубликовано на Java Code Geeks с разрешения Дастина Маркса, партнера нашей программы JCG . Смотрите оригинальную статью здесь: Интерфейсы командной строки Java (часть 23): Rop
Мнения, высказанные участниками Java Code Geeks, являются их собственными. |