Java命令行界面(第18部分):JCLAP

Giles WinstanleyJCLAPJava命令行参数解析器 )是基于Java的命令行处理库的系列文章中介绍的第18个库。 这篇文章的示例基于需要Java 8的 JCLAP 1.4 JCLAP主页上指出:“ JCLAP帮助Java开发人员为其应用程序创建易于使用的命令行界面。”

JCLAP通过在CLAParser对象上调用“添加XXXXX选项”方法来完成“定义”阶段。 与本系列前面的文章中的例子一样,该文章的示例定义了两个命令行选项,一个用于文件路径和名称,一个用于启用冗长性。 下一个代码清单演示了如何使用JCLAP定义这两个命令行选项(完整的代码清单可在GitHub上找到 )。

JCLAP的“定义”阶段

final CLAParser parser = new CLAParser();
final Option<String> fileNameOption
   = parser.addStringOption("f", "file", "Path/name of the file.", 1, 1);
final Option<Boolean> verbosityOption
   = parser.addBooleanOption("v", "verbose", "Verbosity enabled?");

刚刚显示的代码清单证明JCLAP支持长参数名和短参数名,提供描述的能力以及指定每个参数的最小和最大出现次数的能力。

“解析”阶段是通过JCLAP调用CLAParser.parse(String [])方法实现的,尽管该方法确实抛出了检查到的异常OptionException

JCLAP的“解析”阶段

parser.parse(arguments);

在JCLAP中以不同的方式实现“询问”阶段,但是我在这里使用的方法是使用重载的CLAParser.getOptionValue()方法之一。

JCLAP的“审讯”阶段

out.println("File path/name is " + parser.getOptionValue(fileNameOption));
out.println("Verbosity is " + (parser.getOptionValue(verbosityOption) != null));

JCLAP还支持自动创建使用情况声明。 下一个代码清单演示了如何在与捕获选中的OptionException相关联的块中调用重载的CLAParser.printUsage()方法之一。

使用JCLAP的自动使用情况声明

catch (OptionException optionException)
{
   out.println("Exception: " + optionException);
   parser.printUsage(out, true);
}

接下来的两个屏幕快照描述了实际的代码示例。 当没有提供任何参数时,第一个屏幕快照显示JCLAP生成的用法语句。 第二张图显示了“幸福的道路”,为两个参数应用了长标记名和短标记名。

Java命令行界面(第18部分):JCLAP

Java命令行界面(第18部分):JCLAP

选择用于帮助Java进行命令行解析的框架或库时,需要考虑snaq.net JCLAP的特征。

JCLAP(Java命令行参数解析器)是一个具有商业友好许可证的小型库,近年来已对其进行了更新,以使用Java 8功能。 JCLAP的作者在该项目的主页上写道:“ JCLAP绝不是唯一的,并且许多类似的实用程序都是免费的和商业上可用的。” 作者进一步解释说:“现在存在许多类似的解决方案,似乎又有多余的解决方案,但是已经创建了JCLAP,将其公开可用似乎是有益的。”

其他参考

翻译自: https://www.javacodegeeks.com/2017/10/java-command-line-interfaces-part-18-jclap.html