Для школьного проекта мне нужно было провести рефакторинг старого кода, который анализировал почти 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