网站设计模板百度云,网站登录验证码不正确,做展示型企业网站,汕头网站关键词优化教程本系列文章的第21篇关于Java中解析命令行参数的文章的重点是Airline 2库。 Airline 2的GitHub项目页面描述了该库#xff0c;“ Airline是一个Java库#xff0c;提供了基于注释的框架来解析命令行界面。” 该页面进入状态#xff1a;航空公司“既支持简单的单个命令#xf… 本系列文章的第21篇关于Java中解析命令行参数的文章的重点是Airline 2库。 Airline 2的GitHub项目页面描述了该库“ Airline是一个Java库提供了基于注释的框架来解析命令行界面。” 该页面进入状态航空公司“既支持简单的单个命令也支持具有组的复杂git样式的界面。” 页面还限定航空公司2的配合关系原始航空公司库 “这是一个基本上改写叉原始航空公司库 ”。 这篇文章特别介绍了航空公司2.3.0 。 这篇文章中的示例将与本系列之前的文章中的示例类似这些替代类库用于解析Java的命令行参数。 这样这些示例中支持的选项将是文件路径和名称的规范以及是否应启用冗长性的规范。 此处显示的示例的完整代码列表可在GitHub上找到。 使用Option批注很容易完成从Java与Airline 2解析Java命令行参数的“定义”阶段如下面的代码清单所示。 航空公司2的“定义”阶段 Option(titlefile, name{-f, --file}, descriptionPath and name of file.)
private String file;Option(titleverbose, name{-v, --verbose}, descriptionEnable or disable verbosity.)
private boolean verbose; Option注释的这些实例的代码是不言自明的。 Option批注的“ name ”元素需要一个或多个String 因此允许为同一选项指定多个标志。 在这种情况下我为选项使用了相同的单连字符/单字符“短”形式和双连字符/单词“长”形式。 “解析”阶段可以通过航空公司2使用SingleCommand类及其静态singleCommandClass C方法来获取SingleCommand实例然后在该实例上调用parseString []方法来完成。 在下面的代码清单中将演示这两个语句。 航空公司2的“解析”阶段 final SingleCommandMain parser SingleCommand.singleCommand(Main.class);
final Main main parser.parse(arguments); 只需通过访问SingleCommand.parse(String[])方法提供的实例的Option字段即可完成航空公司2的“询问”阶段。 下一个代码清单对此进行了演示。 航空公司2的“审讯”阶段 if (main.file ! null)
{out.println(File path/name is main.file .);out.println(Verbosity is main.verbose);
}
else
{out.println(ERROR: File path/name must be provided with -f or --file.);
} 接下来的两个屏幕快照显示了实际的示例。 当没有提供任何参数时第一个屏幕快照显示输出第二个图像显示“正常”使用两个选项的长和短版本来指定文件路径/名称和详细程度。 航空公司支持生成使用和帮助信息。 不幸的是我无法使用它因为遇到了一个编译错误指出“找不到com.github.rvesse.airline.io.printers.UsagePrinter的类文件。” 我下载airline-2.3.0.jar没有看到该类。 选择框架或库来帮助Java进行命令行解析时需要考虑Airline 2的特性。 航空公司2是开源的并根据Apache许可2.0版获得许可 。 航空公司2是本系列中“ 较重 ”的库之一 air-2.3.0.jar的大小约为316 KB并且对Apache Commons Collections Apache Commons Lang和javax.inject / javax.inject具有运行时依赖性。 。 尽管航空公司已经存在了一段时间但航空公司2是该项目的最新更新。 Airline 2基本用法的文档非常直接且有用但是本文中未显示的许多功能的文档仍在构建中包含许多“ TODO”语句。 对于这些帖子中我的示例中实现的参数处理的“单个命令”风格 Airline 2易于使用。 我没有看到用于表达是否需要某个选项的任何方法但是简单地在继续之前检查所需选项的null是一种简单的方法。 鉴于其规模和依赖性Airline 2可能最适合希望使用其本文未演示的许多强大功能的用户。 对于本博文和本系列其他博文中演示的简单示例在表示“定义”“解析”和“审讯”阶段方面有一些轻量级的库它们具有更少的依赖项它们与Airline 2的工作原理非常相似。 其他参考 航空公司2 GitHub 航空公司用户指南 航空公司2.3.0 Maven存储库 Airline 2.3.0 API文档 Javadoc 原始航空公司 翻译自: https://www.javacodegeeks.com/2017/10/java-command-line-interfaces-part-21-airline-2.html