Статьи

Вычисление аргументов командной строки с помощью Apache Commons CLI

Для школьного проекта мне нужно было провести рефакторинг старого кода, который анализировал почти 30 аргументов командной строки. Мне нужно было добавить еще несколько аргументов и изменить некоторые старые аргументы, но старый код вообще не поддерживался. Поэтому я решил использовать библиотеку, которая будет следить за анализом аргументов.

Я выбрал Apache Commons CLI . Это действительно простая библиотека для анализа командной строки. Он не идеален, но выполняет ту работу, которая мне была нужна, и является мощной для этой работы.

С этим API вы должны объявить экземпляр параметров. Этот класс используется для описания аргументов командной строки программы. Конструктор опций не принимает аргументов.

Options options = new Options();

Затем вы должны использовать методы addOption, чтобы добавить некоторые аргументы в приложение. Есть три версии методов:

  • addOption (Option opt): добавить опцию класса Option.
  • addOption (String opt, логическое hasArg, String description): добавить новую опцию к аргументам. Эта опция имеет только короткое имя.
  • addOption (String opt, String longOpt, логическое hasArg, String description): добавить новую опцию к аргументам. Опция имеет короткое имя и длинное имя.

Нам нужны некоторые объяснения здесь. Короткая опция используется для определения аргумента с помощью простой черты (-shortopt), а длинная опция — с двойной чертой (–longopt). hasArg указывает, принимает ли параметр аргумент. Описание, как и его название, является описанием опции. Используется для распечатки справки программы.

Используя экземпляры Option, вы можете настроить все свойства опции, используя установщики и конструктор. Вот все сеттеры, которые можно использовать для настройки опции:

  • void setArgName (String argName): имя аргумента
  • void setArgs (int num): количество аргументов, принимаемых параметром
  • void setDescription (String description): описание опции
  • void setLongOpt (String longOpt): длинное имя параметра
  • void setOptionalArg (boolean optionArg): указать, является ли аргумент этой опции необязательным
  • void setRequired (логическое значение требуется): укажите, требуется ли опция или нет
  • void setType (Тип объекта): установить тип параметра. Вот поддерживаемый тип: File.class, Number.class, Class.class, Object.class, Url.class
  • void setValueSeparator (char sep): установить разделитель значений, он используется для создания системы, подобной свойству Java, как -Dmaven.test.skip = true, разделитель =

Существует также другой способ создания экземпляра Option, используя класс OptionBuilder. Это немного странно, потому что все методы статические и метод возвращает ссылку на конструктор. А затем вы делаете вызов экземпляру компоновщика, используя статический метод. Этот метод эквивалентен методам класса Option с разными именами (withXXX, hasXXX,…). Когда вы настроили эту опцию, вы должны вызвать один из методов create, чтобы создать экземпляр и сбросить OptionBuilder.

После того, как вы заполнили экземпляр параметров аргументами программы, вы можете использовать его. Вы должны использовать CommandLineParser для анализа параметров. Существует три реализации этого интерфейса:

  • BasicParser : очень простой парсер
  • PosixParser : парсер для разбора коротких опций
  • GnuParser : анализатор для анализа длинных и коротких опций

Простой пример с использованием GnuParser:

CommandLineParser parser = new GnuParser();
CommandLine cmd = parser.parse(options, args);

Вы получаете объект CommandLine, представляющий все аргументы. Метод parse () может вызвать исключение ParseException, если указанные аргументы недопустимы. С помощью этого объекта вы можете получить параметры, которые были переданы приложению. Для этого вы можете использовать данные методы:

  • Object getOptionObject: Возвращает значение параметра, проанализированное для указанного типа.
  • Свойства getOptionProperties (String opt)
  • Строка getOptionValue: вернуть значение параметра
  • String [] getOptionValues: вернуть значения параметра
  • Object getParsedOptionValue (String opt): вернуть значение параметра, проанализированное для указанного типа
  • boolean hasOption: укажите, была ли указана опция или нет
  • List getArgList (): вернуть все аргументы, которые не указаны args
  • String [] getArgs (): вернуть все аргументы, которые не указаны args

С помощью этого API вы также можете сгенерировать справку программы:

HelpFormatter formatter = new HelpFormatter();
formatter.printHelp( "program", options);

При этом вы отображаете список аргументов, принятых программой.

На этом примере мы увидели основные функции этой библиотеки.

Для получения дополнительной информации обратитесь к веб-сайту Apache Commons CLI .

С http://www.baptiste-wicht.com/2010/10/compute-command-line-arguments-with-apache-commons-cli