网站推广的最终目的是什么,品牌注册和商标注册有什么区别,百度减少大量网站收录,深圳网架制作JOpt Simple的主页将这个基于Java的库称为“用于解析命令行选项的Java库#xff0c;例如您可能传递给调用javac的Java库#xff0c;”该Java库试图“使用POSIX getopt#xff08;#xff09;的命令行选项语法#xff09;和GNU getopt_long#xff08;#xff09; 。” 这… JOpt Simple的主页将这个基于Java的库称为“用于解析命令行选项的Java库例如您可能传递给调用javac的Java库”该Java库试图“使用POSIX getopt的命令行选项语法和GNU getopt_long 。” 这是我使用Java进行命令行参数处理系列文章的第六篇其重点是JOpt Simple 。 在本系列的Java命令行处理中我回顾过的大多数库都以某种方式使用了注释。 像Apache Commons CLI一样 JOpt Simple不使用注释。 JOpt Simple改为支持“流畅的界面”。 原始帖子的示例代码清单和输出屏幕快照基于JOpt Simple 4.9进行编译和运行但是当我使用JOpt Simple 5.0.3进行编译和运行时它们对我的工作方式相似且无需更改代码。 。 下一个代码清单演示了使用JOpt Simple进行命令行处理的“定义”阶段该示例有意类似于先前有关Java命令行处理的文章中所使用的示例。 在JOpt Simple中定义命令行选项 final OptionParser optionParser new OptionParser();
final String[] fileOptions {f, file};
optionParser.acceptsAll(Arrays.asList(fileOptions), Path and name of file.).withRequiredArg().required();
final String[] verboseOptions {v, verbose};
optionParser.acceptsAll(Arrays.asList(verboseOptions), Verbose logging.);
final String[] helpOptions {h, help};
optionParser.acceptsAll(Arrays.asList(helpOptions), Display help/usage information).forHelp(); 此代码清单演示了如何使用“流利的API”方法定义命令行选项。 实例化一个OptionParser 然后为每个潜在的命令行选项调用其重载的acceptsAll方法之一。 使用acceptsAll可以将多个标志/选项名称与单个选项相关联。 对选项同义词的这种支持允许对同一选项使用“ -f”和“ -file”。 上面的代码演示了可以通过.required()方法调用根据需要指定命令行选项。 在这种情况下需要一个“文件”。 如果期望将参数与选项/标志关联放置在命令行上则可以使用withRequiredArg()方法。 上面的代码清单中的“ help”选项利用forHelp()方法告诉JOpt Simple如果与forHelp()关联的选项位于命令行中则如果命令行中未包含必需的选项则不要抛出异常。命令行。 在我的示例中这可以确保操作员可以使用-h或--help来运行应用程序而无需任何其他必需的选项并且可以避免引发异常。 “ JOpt简单用法示例”页面提供了有关定义命令行选项时可用的许多不同可能性的重要详细信息并使用基于JUnit的断言来演示这些用于定义命令行选项的不同策略如何不同地配置所解析的内容。 上面显示的我的代码清单仅显示了可用内容的一小部分。 请注意 OptionParser类的Javadoc注释也包含重要的细节。 如果一个人静态地导入 Arrays.asList并将潜在的命令行选项的名称作为字符串直接传递给该asListString ...方法而不是使用我创建字符串数组的方法则上面的代码会更加简洁。首先然后将它们转换为列表。 我在介绍性文章中使用了这种方法以很清楚地说明正在发生的事情但是与该文章在GitHub上相关的代码版本可能会更改为使用静态导入方法。 使用JOpt Simple进行命令行处理的“解析”阶段非常简单 final OptionSet options optionParser.parse(arguments); 使用JOpt Simple进行“解析”需要调用OptionParser.parseString…方法 使用JOpt Simple进行命令行处理的“询问”阶段也很简单将在下一个代码清单中进行演示。 out.println(Will write to file options.valueOf(file) and verbosity is set to options.has(verbose)); 单行代码演示了询问是由解析调用返回的OptionSet实例上调用便捷方法组成的。 在这种情况下在OptionSet上调用的两个演示方法是OptionSet.valueOfString和OptionSet.hasString 。 JOpt Simple还支持自动生成用法/帮助语句。 下一个代码清单演示了如何执行此操作。 optionParser.printHelpOn(out); 刚刚显示的单行代码将OptionParser实例生成的用法/帮助信息写入通过其printHelpOnOutputStream方法提供给它的输出流。 上面显示了应用JOpt Simple所需的最重要的代码是时候看看使用此代码的简单应用程序的行为了。 以下屏幕快照演示了实际的代码。 第一个屏幕快照演示了未提供所需的“文件”命令行选项时打印的MissingRequiredOptionsException 。 下一个屏幕快照演示了如何在命令行中指定“文件”和“详细”选项。 在下一个屏幕快照中将演示JOpt Simple提供的自动使用/帮助消息。 在选择框架或库来帮助使用Java进行命令行解析时需要考虑以下Apache Commons CLI的其他特征。 JOpt Simple是开源的并根据MIT许可获得许可 。 在撰写本文时JOpt Simple的最新版本是5.0.3和6.0 Alpha 1而最新版本是5.0.1和6.0。 本文中使用了JOpt Simple 4.9 JOpt Simple更改日志中当前列出的最新版本和Maven依赖示例中当前显示的版本。 jopt-simple-4.9.jar大小约为65 KB并且对任何第三方库都没有编译时依赖性。 JOPT简单的已经或正在使用的几个有影响库和框架。 这些包括Spring框架 可选的编译依赖性和JMH 编译依赖性。 JOpt Simple Web页面的主页引用了Mark Reinhold的话 “我想您可能会对我们在开源Java开发工具包中使用jopt-simple库感兴趣。 JOpt Simple已面世几年但似乎仍在维护最新的Maven Central是2016年12月。 JOpt Simple不使用注释而是依靠流畅的API调用。 JOpt Simple支持命令行选项之间的关系例如必需的从属选项 。 当其他受欢迎且有用的工具和库使用该库时通常这是该库有用的积极信号。 JOpt Simple被选为某些此类工具和库的命令行处理库的选择无疑与JOpt Simple很好。 对于喜欢使用不使用注释的Java命令行处理的用户JOpt Simple提供了Apache Commons CLI的有用而强大的替代方法。 JOpt Simple提供的功能远远超过本文中显示的功能而该功能最好通过阅读基于单元测试的“ 浏览JOpt Simple的功能 ” 来发现 。 其他参考 JOpt简单 基于Javadoc的JOpt简单API文档 Maven上的JOpt Simple JOpt简单示例 JOpt简单与JewelCli JOpt简单与JCommander JOpt Simple的命令行参数 翻译自: https://www.javacodegeeks.com/2017/07/java-command-line-interfaces-part-6-jopt-simple.html