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文件。

其他参考

  • Picocli主页
  • Picocli发布
  • Picocli的单个源文件: CommandLine.java
  • Maven上的Picocli
  • GitHub上的Picocli
  • Picocli API文档 (Javadoc)

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

java登录界面命令

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

  1. java登录界面命令_Java命令行界面(第18部分):JCLAP

    java登录界面命令 Giles Winstanley的JCLAP ( Java命令行参数解析器 )是基于Java的命令行处理库的系列文章中介绍的第18个库. 这篇文章的示例基于JCLAP 1.4 , ...

  2. java登录界面命令_Java命令行界面(第26部分):CmdOption

    java登录界面命令 由于Tweet,我了解了本系列中第26个基于Java的功能强大的库,该库用于解析命令行参数 . CmdOption在其GitHub主页上被描述为"一个通过注释配置的,用 ...

  3. java登录界面命令_Java命令行界面(第16部分):JArgp

    java登录界面命令 这篇文章中介绍的基于Java的命令行参数处理库是IBM developerWorks文章Java编程动态性,第3部分,应用的反射 (第2003 部分,此归档文章于2016年&qu ...

  4. java登录界面命令_Java命令行界面(第19部分):jClap

    java登录界面命令 本系列中第19个帖子的重点是从Java代码解析命令行参数是jClap ( Java命令行参数解析器 ),不应与JCLAP库混淆,该库是我本系列前 一篇文章的重点. 上 一篇 文章 ...

  5. java登录界面命令_Java命令行界面(第25部分):JCommando

    java登录界面命令 JCommando 网站 上将JCommando描述为"命令行参数的Java参数解析器". JCommando读取XML配置以生成一个Java类,该类处理Ja ...

  6. java登录界面命令_Java命令行界面(第29部分):自己动手

    java登录界面命令 本系列有关从Java解析命令行参数的系列简要介绍了28个开源库,这些库可用于处理Java代码中的命令行参数. 即使涵盖了这28个库,该系列也没有涵盖用于解析Java命令行选项的所 ...

  7. java登录界面命令_Java命令行界面(第7部分):JCommander

    java登录界面命令 这是我系列的第七篇文章,简要介绍了用于处理Java命令行参数的各种库. 这篇文章回到了基于注释的库的覆盖范围,该库似乎是在Java中可用于处理命令行参数的众多可用库中知名度最高, ...

  8. java登录界面命令_Java命令行界面(第12部分):CLAJR

    java登录界面命令 第十二篇有关在Java中处理命令行参数的文章的特色库是带有Java Reflection的命令行参数 (CLAJR). 该"库"是单个Java源文件( CLA ...

  9. java登录界面命令_Java命令行界面(第11部分):CmdLn

    java登录界面命令 这篇文章介绍了如何使用Ostermiller Java Utilities 1.08.02的CmdLn(Java命令行解析器)来处理基于Java的应用程序中的命令行参数. Ost ...

最新文章

  1. 基于Attention机制的轻量级网络架构以及代码实现
  2. 【Python】 获取MP3信息replica
  3. Thinking in java基础之集合框架
  4. 集成学习-Bagging集成学习算法随机森林(Random Forest)
  5. BERT, ELMo, GPT-2: 这些上下文相关的表示到底有多上下文化?
  6. gan pytorch 实例_GaN教程(1)|美国宜普(EPC)公司推出“如何使用氮化镓器件”系列视频教程,讲授GaN功率晶体管和集成电路设计的方方面面...
  7. C++ Socket编程步骤
  8. SPI通信原理---STM32F4--HAL
  9. 新概念51单片机C语言教程纠错(2)
  10. Session Cookie 之我见
  11. DeepL Pro(deepl翻译器)官方中文版V2.2.0 | 翻译软件哪个好用 | 翻译软件排行榜前十的神器
  12. ROS教程之读取激光雷达(sick_tim561)数据
  13. 市电220V说的是峰峰值还是有效值呢?
  14. iTextSharp
  15. 【备忘录】transformers tokenizer.tokenize和tokenizer.encode
  16. 【Linux】Ubuntu20网络频繁掉线解决
  17. 盘一盘那些开设了大数据专业的中国高校
  18. java 1 2 等于_java 判断语句中一个等于号和两个等于号的区别是什么?
  19. 如何成为一名架构师,架构师成长之路
  20. 产品随记-无埋点数据采集

热门文章

  1. [HNOIAHOI2018] 转盘(线段树维护单调栈)
  2. P4301-[CQOI2013]新Nim游戏【线性基】
  3. P3332-[ZJOI2013]K大数查询【树套树】
  4. jzoj3845-简单题【dp】
  5. P3470 [POI2008]BBB-BBB【线段树,贪心】
  6. P1993-小K的农场【差分约束,SPFA】
  7. 【贪心】雷达装置(ybtoj 贪心-1-2)
  8. 【模拟】【递归】解压字符串(jzoj 1519)
  9. 简单多边形三角化(暴力)
  10. Oracle入门(三B)之11G新特性 SYSASM 角色用来管理ASM