Commons CLI 教程

Commons Cli API介绍

Apache Commons CLI 提供了一个简单的 API,用于呈现、处理和验证命令行界面。

接口

CommandLineParser

一个实现 CommandLineParser 接口的类可以根据指定的选项解析一个字符串数组,并返回一个 CommandLine。所有实现类如下图:


BasicParser(已废弃)

提供了 flatten 方法的一个非常简单的实现,从 1.3 开始,使用 DefaultParser 代替。

CommandLine

表示根据 Options(选项)描述符解析的参数列表。

除了为需要参数的选项检索 getOptionValue(String opt) 之外,它还允许查询布尔 hasOption(String opt)。

此外,任何剩余的或无法识别的参数都可用于进一步处理。

CommandLine.Builder

使用描述性方法创建 CommandLine 实例的嵌套构建器类。

DefaultParser

默认的解析器。

DefaultParser.Builder

使用描述性方法创建 DefaultParser 实例的嵌套构建器类。使用示例:

DefaultParser parser = Option.builder()
    .setAllowPartialMatching(false)
    .setStripLeadingAndTrailingQuotes(false)
    .build();

GnuParser(已废弃)

提供了 flatten 方法的实现,从 1.3 开始,使用 DefaultParser 代替。

HelpFormatter

命令行选项的帮助消息格式化程序。示例:

Options options = new Options();
options.addOption(OptionBuilder.withLongOpt("file").withDescription("The file to be processed").hasArg().withArgName("FILE").isRequired().create('f'));
options.addOption(OptionBuilder.withLongOpt("version").withDescription("Print the version of the application").create('v'));
options.addOption(OptionBuilder.withLongOpt("help").create('h'));

String header = "Do something useful with an input file\n\n";
String footer = "\nPlease report issues at http://example.com/issues";

HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("myapp", header, options, footer, true);

这将产生以下输出:

usage: myapp -f <FILE> [-h] [-v]
Do something useful with an input file

 -f,--file <FILE>   The file to be processed
 -h,--help
 -v,--version       Print the version of the application

Please report issues at http://example.com/issues

Option

用来描述单个命令行选项。它维护有关该选项的短名称、长名称(如果存在的话)、指示该选项是否需要参数的标志以及该选项的自文档描述的信息。

Option 不是独立创建的,而是通过 Options 的实例创建的。一个选项至少需要有一个短或长名称。

注意:一旦一个 Option 被添加到 Options 的实例中,它的必需标志就不能被改变。

Option.Builder

使用描述性方法创建 Option 实例的嵌套构建器类。使用示例:

Option option = Option.builder("a").required(true).longOpt("arg-name").build();

OptionBuilder(已废弃)

允许用户使用描述性方法创建选项。从 1.3 开始,使用 Option.builder(String) 代替。

注意:OptionBuilder 类不是线程安全的。

OptionGroup

一组相互排斥的选项,即这些选项是互斥的。

Options

Commons Cli 库的主要入口点。

Options 表示 Option 对象的集合,这些对象描述了命令行可能的选项。

它可以灵活地解析多头和空头选项,带或不带值。此外,它可以只解析命令行的一部分,从而允许灵活的多阶段解析。

Parser(已废弃)

从 1.3 开始,使用 flatten 方法的两遍解析(two-pass)不够灵活,无法处理复杂的情况。

PatternOptionBuilder

允许从单个字符串创建选项(Options),该模式包含各种单字符标志,并通过可选的标点符号表示其期望的类型。

PatternOptionBuilder 模式如下:

例如,下面的命令允许 '-v -p string-value -f /dir/file' 的命令行标志。感叹号位于必选选项前面。

Options options = PatternOptionBuilder.parsePattern("vp:!f/");

PosixParser(已废弃)

提供了 flatten 方法的实现。从 1.3 开始,使用 DefaultParser 代替。

TypeHandler

这是一个临时实现。TypeHandler 将处理 OptionTypes 的可插拔性,它将把所有这些类型的转换功能引导到 Commons 中的 ConvertUtils 组件。

异常

  • AlreadySelectedException 当提供了选项组中的多个选项时抛出。

  • AmbiguousOptionException   当无法从部分名称识别选项时引发的异常。

  • MissingArgumentException  当需要参数的选项未提供参数时抛出。

  • MissingOptionException  当未提供所需选项时抛出。

  • ParseException  在命令行解析期间抛出的基础异常。

  • UnrecognizedOptionException  在解析一个无法识别的选项时抛出。

异常类的继承关系如下图:

从上图可知,ParseException 异常是 Commons Cli 的基础异常类。

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号