Статьи

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

Библиотека 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 для обработки параметров командной строки, которая проста в освоении и использовании.

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

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

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