argparser

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库还支持“帮助” /“使用”消息。 在下一个代码清单中对此进行了演示,如果未指定“ file”选项(如果其“ value”为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提供的“用法”。 第二个图像显示了长和短选项名称的使用。

javaarpg游戏 java arpg_linux

javaarpg游戏 java arpg_python_02

选择框架或库来帮助Java进行命令行解析时,需要考虑argparser的特征。

  • Arparser是开源的。 对我来说,尚不清楚它是否已获得任何特定许可的许可,但是JAR附带有一个COPYRIGHT文件,内容为“版权所有John E. Lloyd,2004。保留所有权利。 授予使用,复制,修改和再分发的许可,但前提是保留此版权声明,并在适当的时候给予作者以荣誉。” 关于按“原样”分发软件的标准免责声明。
  • argparser.jar的大小约为129 KB,但包含.java源代码文件, .class编译文件和Javadoc HTML文件。
  • argparser.ArgParser类的Javadoc非常出色,并且是我希望在Javadoc中定期看到基于Java的“主要”类的示例。 这是一个很好的示例,说明小型开源项目如何一次记录项目/库,因为还使用了类的Javadoc并从项目的主页链接到该类。 该类级别的Javadoc甚至包括SimpleExample源代码(也位于分布式JAR文件中),以提供有关如何使用类和库的示例。
  • 因为argparser是使用“ 主要版本:46 ”编译的,所以它应与早于JDK 1.2的Java版本一起运行!

javaarpg游戏 java arpg_linux_03

argparser库很小,易于使用。 对于那些希望使用小型库完成基本命令行处理的人来说,它可能最有吸引力,尤其对于那些仍然可能在老版本的JDK中运行其基于Java的命令行处理代码的人,它尤其有吸引力。 使该库与本系列中的许多其他库不同的几件事是其出色的基于Javadoc的API文档以及其针对选项特征的字符串规范方法。

其他参考