java登录界面命令_Java命令行界面(第10部分):picocli

Picocli是一个单文件Java框架,用于解析命令行参数并生成帮助消息。本文介绍了如何使用Picocli 0.9.7处理命令行参数,包括其开源性质、注解字段的定义和解析阶段,以及颜色语法支持等功能。
摘要由CSDN通过智能技术生成

java登录界面命令

picocli主页面将picocli描述为“强大的微小命令行界面”,“ picocli”是一个单文件Java框架,用于解析命令行参数并生成精美,易于定制的用法帮助消息。 有颜色。” 这篇文章简要概述了如何使用Picocli 0.9.7处理Java代码中的命令行参数。

像本系列中介绍的其他基于Java的命令行处理库一样, picolci是开源的 。 由于picocli的所有实现都存在于单个Java源代码文件中 ,因此如果需要,可以直接直接使用源代码。 picocli页面强调了这一点,“ picocli的一个显着特征是它旨在让用户运行基于picocli的应用程序而无需将picocli作为外部依赖项:所有源代码都保存在一个文件中,以鼓励应用程序作者将其包含在其中。源表格 。” 如果您想将picocli用作库,则Maven信息库中提供了一个JAR,其中包含许多已编译的.class文件(Picocli具有一个Java文件,但具有许多嵌套的类和注释)。

了解Picocli单文件性质的最简单方法是查看该单文件本身。 Picocli的“下载”页面上提供了CommandLine.java的Java源代码。 接下来的两个屏幕快照显示了当对CommandLine类执行时,对一个内部注释和一个内部类执行时, javap的一些输出。

无论是将CommandLine.java编译成自己的类/ JAR文件,还是选择使用Maven中的预构建JAR,使用Picocli的应用程序的源代码显然都是相同的。 使用Picocli进行解析的“定义”阶段是通过注释实例字段来完成的,这些实例字段将存储与命令行选项关联的值。 下面的代码段对此进行了演示。

Picocli的“定义”阶段

/**
 * Demonstrate Java-based command-line processing with picocli.
 */
@Command(
   name="Main",
   description="Demonstrating picocli",
   headerHeading="Demonstration Usage:%n%n")
public class Main
{
   @Option(names={"-v", "--verbose"}, description="Verbose output?")
   private boolean verbose;

   @Option(names={"-f", "--file"}, description="Path and name of file", required=true)
   private String fileName;

   @Option(names={"-h", "--help"}, description="Display help/usage.", help=true)
   boolean help;

刚刚显示的代码示例演示了Picocli允许指定选项标志的多个名称(在我的示例中,我指定了单连字符单字符名称和双连字符多字符名称)。 该例子也说明required=true能为所需的选项,指定help=true支持特别可以“帮助”选项来指定具体的帮助,行为,比如打印使用细节,避免与缺乏所需的选项错误。 请注意,Picocli 0.9.8通过versionHelpusageHelp添加了更多特定的帮助类型支持。

“解析”阶段是在Picocli中使用CommandLine.populateCommand(T,String ...)完成的 ,其中T是带有Picocli注释字段的类的实例,其余String是要解析的参数。 下一个代码片段对此进行了演示。

Picocli的“解析”阶段

final Main main = CommandLine.populateCommand(new Main(), arguments);

使用Picocli进行“询问”阶段仅需访问在“解析”阶段中传递给CommandLine.populateCommand(T,String...)方法的实例的Picocli注释字段。 下一个代码清单中描述了这种“询问”的简单示例。

Picocli的“审讯”阶段

out.println(
     "The provided file path and name is " + main.fileName
   + " and verbosity is set to " + main.verbose);

要在命令行上提供-h--help时向用户显示帮助/使用信息,就像“询问”指定为help=true的Picocli注释字段一样简单,以查看是否设置了该布尔值并且,如果已设置,则调用重载的CommandLine.usage方法之一。 我碰巧使用了此方法的static版本之一,如下面的代码清单所示。

Picocli的帮助/使用

if (main.help)
{
   CommandLine.usage(main, out, CommandLine.Help.Ansi.AUTO);
}

接下来的几个屏幕快照演示了实际的基于Picocli的简单处理应用程序。 第一张图片显示了错误消息的类型和堆栈跟踪,当不存在必需的标志时显示。 第二张图片显示了如何在注释中指定我使用的长名和短名。 第三张图片显示了正在使用的帮助功能。

许多其他基于Java的命令行解析库所不具备的Picocli可选功能之一是颜色语法支持 。 这篇文章的第一个代码清单显示了一些用@| |@注释定义的字符串@| |@ @| |@语法。 在上面显示“帮助”用法的屏幕快照中,这些字符按原样传递,没有特殊处理。 但是,如果我改为在Cygwin中运行此示例代码,则会看到这些标记完成的工作。

从上面的屏幕快照中,我们看到Picocli自动将某些颜色语法(黄色和白色)应用于各个选项的帮助,并且还将自定义的粗体和带下划线的粗体语法应用于描述@| |@区域@| |@ @| |@语法已应用。

在选择框架或库来帮助使用Java进行命令行解析时,需要考虑以下Picocli的其他特征。

  • Picocli是开源的,并根据Apache License 2.0获得许可
  • Picocli不需要下载任何第三方库或框架。
    • Picocli源代码完全包含在一个.java文件中,并且该源代码可以复制并粘贴到自己的配置管理系统中,并与其余应用程序代码一起构建,这意味着甚至Picocli JAR文件也并非绝对必要。
  • CommandLine.java源代码文件(Picocli 0.9.7)不到3700行(包括空白和注释),大小几乎为200 KB。 picocli-0.9.7.jar文件的大小约为83 KB。
  • Picocli得到当前和经常的支持。 它的0.9.8版本是昨天发布的(在我撰写了这篇文章的大部分内容之后)。
  • 与其他几个基于Java的命令行处理库的文档相比, Picocli文档更为详细,并且在许多方面都更具现代感。
  • Picocli对颜色语法的支持易于使用,并且在不同平台上对颜色语法的支持已在文档的“ 支持的平台 ”部分中进行了说明。
  • Picocli在实例级字段上使用批注的方式与某些其他基于Java的命令行处理库类似,并且具有相同的优势。
  • Picocli的基本功能非常易于访问且易于快速学习,但是Picocli还支持使用Picocli显着自定义命令行处理的多个方面的功能。

Picocli是当前支持和更新的库,用于处理Java的命令行参数。 它具有其他一些可用的基于Java的命令行处理库的一些较新的功能和方法,并引入了几个不同的功能(颜色语法和整个库封装在单个Java源文件中)。 Picocli易于使用并具有吸引力,但是如果特定的开发人员希望获得颜色语法支持或将源代码文件拖放到开发人员项目中的能力,则该开发人员很可能会将自己与其他开发人员分开需要一个JAR或已编译的.class文件。

其他参考

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

java登录界面命令

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值