John Lloyd的argparser是本系列的第二十二篇有关基于Java的命令行参数解析的文章中介绍的库。 该库的主页除了提供单个源代码示例外,还提供了指向基于Javadoc的API文档 ,JAR文件,ZIP文件和TAR文件的链接。 本帖子中使用的示例与本系列的前二十一个帖子中使用的示例相似,并处理文件路径/名称和详细选项。 完整的代码清单可在GitHub上找到 。
“定义”阶段是在argparser中完成的,其中“ Holder”类的实例表示传递给ArgParser实例的addOption(String,Object)方法的预期选项。 下一个代码清单对此进行了演示。
argparser的“定义”阶段
final StringHolder file = new StringHolder();
final BooleanHolder verbose = new BooleanHolder();
final ArgParser parser = new ArgParser("java examples.dustin.commandline.argparser.Main");
parser.addOption ("-f,--file %s #Path and name of file", file);
parser.addOption ("-v,--verbose %v #Verbosity enabled?", verbose);
本系列中的许多有关从Java解析命令行参数的库都具有使用单个参数,单个方法或单个注释元素明确说明的选项特征。 如代码清单所示,argparser会将选项的属性拼写在argparser解析的“规范”字符串中。
“解析”阶段是在argparser中完成的,方法是将带有命令行参数的String[]
传递给ArgParser类的matchAllArgs(String [])方法。 下一条代码清单中显示了该单个语句。
用argparser进行“解析”阶段
parser.matchAllArgs(arguments);
“查询”阶段是在argparser中通过访问相应“持有人”类中称为“ 值 ”的public
字段来完成的。 这显示在下一个代码清单中。
argparser的“审讯”阶段
out.println("File path/name is: " + file.value);
out.println("Verbosity is: " + verbose.value);
argparser库还支持“帮助” /“使用”消息。 在下面的代码清单中对此进行了演示,如果未指定“文件”选项(如果其“值”为null
),则在其中编写用法。
argparser的“用法”
if (file.value == null)
{
out.println("ERROR: File path/name was not specified! Use -f or --file to specify file path/name.\n"
+ parser.getHelpMessage());
}
接下来显示的屏幕快照演示了本文中涉及的示例。 第一张图片显示了未指定所需的“文件”选项时argparser提供的“用法”。 第二个图像显示了长和短选项名称的使用。
选择框架或库来帮助Java进行命令行解析时,需要考虑argparser的特征。
- Arparser是开源的。 目前尚不清楚我是否根据任何特定的许可证进行了许可,但是JAR中包含一个
COPYRIGHT
文件,内容为“ Copyright John E. Lloyd,2004。保留所有权利。 授予使用,复制,修改和再分发的许可,但前提是保留此版权声明,并在适当的时候给予作者以荣誉。” 关于按“原样”分发软件的标准免责声明。 - argparser.jar的大小约为129 KB,但包含
.java
源代码文件,.class
编译文件和Javadoc HTML文件。 - argparser.ArgParser类的Javadoc非常出色,并且是我希望在Javadoc中定期看到基于Java的“主要”类的示例。 这是一个小型开源项目如何一次记录项目/库的很好的例子,因为还使用了类的Javadoc并从项目的主页链接到该Javadoc。 该类级别的Javadoc甚至包括
SimpleExample
源代码(也位于分布式JAR文件中),以提供有关如何使用类和库的示例。 - 由于argparser是使用“ 主要版本:46 ”编译的,因此它应使用与JDK 1.2相同的Java版本运行!
argparser库很小,易于使用。 它可能最适合希望使用小型库完成基本命令行处理的用户,尤其适合那些仍然可能在旧版本的JDK中运行其基于Java的命令行处理代码的用户。 使该库与本系列中的许多其他库不同的几件事是其出色的基于Javadoc的API文档以及其针对选项特征的字符串规范方法。
其他参考
- argparser项目页面
- argparser API文档 (Javadoc)
- argparser.jar下载
翻译自: https://www.javacodegeeks.com/2017/10/java-command-line-interfaces-part-22-argparser.html