Rop库在其主页上被描述为“用Java编写的轻量级命令行选项解析器”。 Rop的“简介”还指出:“ Rop的设计目的是最小化同时方便,并涵盖了大多数常见的命令行解析用例。” 这篇文章是本系列中第23篇有关解析Java命令行参数的文章 ,重点是Rop。
与本系列中的该系列的22个帖子类似,该帖子使用一些示例来实现两个命令行选项,一个用于文件路径和名称,一个用于详细级别。 列出示例的完整代码可在GitHub上找到 。
在Rop中,“定义”阶段是通过注释@Command
和@Option
(它们都嵌套在com.github.ryenus.rop.OptionParser
类中)完成的。 这显示在下一个代码清单中。
Rop的“定义”阶段
/*** Demonstrates use of Rop for processing command line* parameters in Java.*/
@Command(name="RopDemo", descriptions="Demonstrates ROP for command line processing.")
public class Main
{@Option(opt={"-f", "--file"}, description="Path and name of file.")private String file;@Option(opt={"-v", "--verbose"}, description="Indicates whether verbosity is enabled or not.")private boolean verbose;
在Rop中,“解析”阶段是通过实例化OptionParser
一个实例并将其字段在“定义”阶段中进行注释的类的定义传递给Rop来完成的。 这显示在下一个代码清单中。
Rop的“解析”阶段
final OptionParser parser = new OptionParser(Main.class);
parser.parse(arguments);
OptionParser.parse(Class)
方法在构造时提供给解析器的实例上隐式调用(通过反射)名称为“ run”的方法。 我已经实现了这种“运行”方法,如下面的代码清单所示。
带拉绳的“审讯”阶段(包括“运行”方法)
/*** Method called implicitly by Rop parser.** @param parser Instance of {@code OptionParser} whose* "parse" method led to my implicit invocation.*/
private void run(final OptionParser parser)
{out.println("File path/name is " + file + " and verbosity is " + verbose);
}
上述代码清单的“运行”的方法显示“询问”由访问完成@Option
-annotated由被填充的字段OptionParser.parse(String[])
呼叫。
随后的三个屏幕快照展示了Rop完成的这些“定义”,“解析”和“询问”阶段。 第一个图像指示未指定所需的“文件”选项时显示的错误消息。 第二张图片描绘了示例的正常行为,该示例处理“文件”和“详细”选项的短名称和长名称的组合。 第三幅图描绘了Rop的内置“帮助”支持,该支持在指定--help
选项时显示。
选择框架或库来帮助Java进行命令行解析时,需要考虑Rop的特性。
- Rop是具有MIT许可证的开源软件。
- 正如所宣传的,绳子很轻; rop-1.1.1.jar的大小约为18 KB,不需要第三方依赖性。
-
rop-1.1.1.jar
的类具有“主要版本:51”,这意味着如果使用这些已编译的类,则需要Java SE 7 。
Rop是基于Java的轻量级库,用于处理易于学习和使用的命令行选项。
其他参考
- Rop主页
- ryenus / rop (GitHub)
- Rop 1.1.1 (Maven)
翻译自: https://www.javacodegeeks.com/2017/10/java-command-line-interfaces-part-23-rop.html