java登录界面命令
由于Tweet,我了解了本系列中第26个基于Java的功能强大的库,该库用于解析命令行参数 。 CmdOption在其GitHub主页上被描述为“一个通过注释配置的,用于Java 5+应用程序的简单注释驱动命令行解析器工具包。” 该项目的副标题是“命令行解析从未如此简单。”
注释@CmdOption
用于注释将包含已解析的命令行参数的字段(或方法)。 换句话说,使用@CmdOption
批注可以通过CmdOption完成“定义”阶段。 这显示在下一个代码清单中。
使用CmdOption的“定义”阶段
@CmdOption(names={"--file","-f"}, description="File Path/Name", minCount=1, args={"filePathAndName"})
private String file;@CmdOption(names={"--verbose","-v"}, description="Is verbosity enabled?", maxCount=0)
private boolean verbose;
与本系列中的其他文章一样, 本文章中使用的示例是指定文件路径和名称以及详细程度的选项。 GitHub上提供了本文中示例代码清单的完整源代码清单。 如上面的代码清单所示,可以使用@CmdOption
批注的names
元素指定“长”(带双连字符)和“短”(带单连字符)选项名称。 minCount
元素用于指定必须向其传递特定选项的参数,而args
元素列出对将在帮助/使用情况显示中呈现的选项的参数的字符串引用。 verbosity选项的maxCount
元素设置为0,因为不应为该选项提供任何参数( -v
或--verbose
存在就足够了)。
所述“语法分析”阶段在CmdOption通过使实例的类的与实现@CmdOption
-annotated字段(或方法)的CmdOption的的构造CmdlineParser
类,然后使String[]
表示命令行参数的parse(String[])
实例化的CmdlineParser
类的parse(String[])
方法。
使用CmdOption进行“解析”阶段
final Main instance = new Main();
final CmdlineParser parser = new CmdlineParser(instance);
parser.parse(arguments);
CmdOption中的“询问”阶段仅包括在传递给CmdlineParser
构造函数的包含类的实例上访问@CmdOption
字段(或方法)。
CmdOption中的“审讯”阶段
out.println("File path/name is '" + instance.file + "'.");
out.println("Verbosity level is " + instance.verbose);
CmdOption提供了使“帮助”或“使用”语句的生成更容易的机制。 如果@CmdOption
批注包含元素isHelp=true
,则在命令行上指定与isHelp=true
关联的选项时,CmdOption将不会验证命令行参数。 这样可以防止显示有关缺少必需选项或参数的错误消息,然后可以调用CmdlineParser.usage()
方法以使CmdOption打印出用法/帮助信息。 接下来展示了一部分证明这一点的代码。
使用CmdOption的“帮助”
@CmdOption(names={"--help","-h"}, description = "Display this help message", isHelp=true)
private boolean help;// ...if (instance.help)
{parser.usage(out);
}
以下三个屏幕快照显示了上面的代码正在使用CmdOption。 第一张图像描述了两条错误消息,一条未指定选项时( -f
/ --file
是必需的),另一条在未指定参数的情况下指定“ file”选项。 第二张图描述了短和长选项名称的组合。 第三幅图像显示了指定-h
或--help
选项时打印的用法。
选择框架或库来帮助Java进行命令行解析时,要考虑CmdOption的特征。
- CmdOption是开源的,并根据Apache许可2.0版发布。
- de.tototec.cmdoption-0.5.0.jar的大小约为82 KB,不需要第三方依赖性。
- CmdOption 0.5.0 使用“主要版本:49”进行编译 ,这意味着它与J2SE 5应用程序兼容。 尽管本系列中涵盖了多个库,这些库的注释与CmdOption的注释相似,但在某些情况下,使用旧版Java的功能可能会有所不同。
- CmdOption仍受支持; 本帖子( 0.5.0 )中介绍的版本已于本月初(2017年10月9日)更新。
CmdOption是一个易于使用的库,用于解析Java中的命令行选项。 它带有自由开源许可证,并已收到最新更新。
其他参考
- CmdOption (GitHub)
- Maven中央存储库上的CmdOption
- MVNRepository上的CmdOption
- Twitter上的@ToToTec和@TobiasRoeser
翻译自: https://www.javacodegeeks.com/2017/10/java-command-line-interfaces-part-26-cmdoption.html
java登录界面命令