CLI Parser最初托管在Google Code上,现在已存档在Google Code上 ,现在可以在GitHub上使用 。 归档的Google Code项目页面将CLI解析器描述为“使用非常简单,非常小的依赖项”,它使用注释“使非常简洁的主要方法不需要知道如何解析带有字段,属性,或基于方法的注射。” 当前的GitHub项目页面将CLI Parser描述为“一个微小的...,超级易于使用的库,用于解析各种命令行参数或属性列表。”
CLI Parser希望通过@Argument
批注实现“定义”阶段。 在下一个代码清单中对此进行了演示,该清单提供了一个简单的示例,定义了“文件”和“详细”选项,如本系列以前的文章中所做的那样 。 完整的代码清单可在GitHub上找到 。
CLI解析器的“定义”阶段
@Argument(alias="f", description="Path/name of the file", required=true)
private String file;@Argument(alias="v", description="Verbosity enabled?")
private boolean verbose;
上面显示的代码定义了两个选项。 可以使用与字段名称匹配的名称( file
或verbose
)或指定的别名( f
或v
)来指定每个选项。 使用CLI分析器,在命令行中用单个连字符表示大小写(全字段名或别名)。 如代码示例所示,可以将选项指定为“ required”,并可以提供描述文本以在帮助/使用情况语句中使用。
CLI Parser中的“解析”阶段是通过其Args
类上的静态函数完成的。 在这种情况下,我将使用Args.parseOrExit(Class, String[])
函数,如下面的代码清单所示。
CLI解析器的“解析”阶段
final List<String> unparsed = Args.parseOrExit(instance, arguments);
通过访问用@Argument
注释的字段来完成“询问”阶段,如下面的代码清单所示。
CLI解析器的“询问”阶段
out.println("File path/name is '" + instance.file + "' and verbosity is " + instance.verbose);
“定义”代码将“文件”选项定义为“必需”。 如果未在命令行上指定此选项,则CLI Parser会使用相应@Argument
批注中提供的“ description”值自动打印出用法说明。 这在下一个屏幕快照中显示,随后是另一个屏幕快照,指示-file
/ -f
和-verbose
/ -v
选项的组合。
选择框架或库来帮助Java进行命令行解析时,需要考虑CLI解析器的特性。
- CLI Parser是开源的,可在Apache License Version 2下获得。
- CLI Parser是一个小型轻量级的库,其中cli-parser-1.1.2.jar约为15 KB,没有第三方依赖性。
正如宣传的那样,CLI Parser是一个“小巧的”和“超级易用的库,用于解析各种命令行参数。” 它是开放的开源Apache许可,使大多数组织都可以轻松地获取和使用它。
其他参考
- cli-parser (GitHub)
- cli-parser (Google代码)
- cli-parser (MVNRepository
翻译自: https://www.javacodegeeks.com/2017/10/java-command-line-interfaces-part-27-cli-parser.html