Java命令行界面(第27部分):cli-parser

CLI Parser最初托管在Google Code上,现在已存档在Google Code上 ,现在可以在GitHub上使用 。 归档的Google Code项目页面将CLI解析器描述为“使用非常简单,非常小的依赖项”,它使用注释“使非常简洁的主要方法不需要知道如何解析带有字段,属性,或基于方法的注射。” 当前的GitHub项目页面将CLI Parser描述为“一个微小的...,超级易于使用的库,用于解析各种命令行参数或属性列表。”

CLI Parser希望通过@Argument批注实现“定义”阶段。 在下一个代码清单中对此进行了演示,该清单提供了一个简单的示例,定义了“文件”和“详细”选项,如本系列以前的文章中所做的那样 。 完整的代码清单可在GitHub上找到 。

CLI解析器的“定义”阶段

@Argument(alias="f", description="Path/name of the file", required=true)
private String file;@Argument(alias="v", description="Verbosity enabled?")
private boolean verbose;

上面显示的代码定义了两个选项。 可以使用与字段名称匹配的名称( fileverbose )或指定的别名( fv )来指定每个选项。 使用CLI分析器,在命令行中用单个连字符表示大小写(全字段名或别名)。 如代码示例所示,可以将选项指定为“ required”,并可以提供描述文本以在帮助/使用情况语句中使用。

CLI Parser中的“解析”阶段是通过其Args类上的静态函数完成的。 在这种情况下,我将使用Args.parseOrExit(Class, String[])函数,如下面的代码清单所示。

CLI解析器的“解析”阶段

final List<String> unparsed = Args.parseOrExit(instance, arguments);

通过访问用@Argument注释的字段来完成“询问”阶段,如下面的代码清单所示。

CLI解析器的“询问”阶段

out.println("File path/name is '" + instance.file + "' and verbosity is " + instance.verbose);

“定义”代码将“文件”选项定义为“必需”。 如果未在命令行上指定此选项,则CLI Parser会使用相应@Argument批注中提供的“ description”值自动打印出用法说明。 这在下一个屏幕快照中显示,随后是另一个屏幕快照,指示-file / -f-verbose / -v选项的组合。

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

  • CLI Parser是开源的,可在Apache License Version 2下获得。
  • CLI Parser是一个小型轻量级的库,其中cli-parser-1.1.2.jar约为15 KB,没有第三方依赖性。

正如宣传的那样,CLI Parser是一个“小巧的”和“超级易用的库,用于解析各种命令行参数。” 它是开放的开源Apache许可,使大多数组织都可以轻松地获取和使用它。

其他参考

  • cli-parser (GitHub)
  • cli-parser (Google代码)
  • cli-parser (MVNRepository

翻译自: https://www.javacodegeeks.com/2017/10/java-command-line-interfaces-part-27-cli-parser.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349230.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用2.26内核的linux,介绍linux 2.6.9-42内核升级到linux 2.6.26-42的方法

介绍linux 2.6.9-42内核升级到linux 2.6.26-42的方法来源&#xff1a;互联网作者&#xff1a;佚名时间&#xff1a;2013-04-10 13:32这篇升级Linux内容的文章&#xff0c;是基于Red Hat的Linux版本&#xff0c;从linux 2.6.9-42内核升级到linux 2.6.26-42的方法&#xff0c;对于…

Java命令行界面(第1部分):Apache Commons CLI

尽管我通常使用Groovy编写要从命令行运行的JVM托管脚本&#xff0c;但是有时候我需要解析Java应用程序中的命令行参数&#xff0c;并且有很多库可供Java开发人员用来解析命令行参数。 在本文中&#xff0c;我将介绍这些Java命令行解析库中最著名的一种&#xff1a; Apache Comm…

丙烯怎么做成流体丙烯_韧性好强度高的聚丙烯复合材料怎么做?让人工智能来帮忙...

01背景介绍聚丙烯(PP)是一种应用广泛的通用塑料&#xff0c;价格便宜、力学性能好、热稳定性高&#xff0c;在机械、汽车、电子电器、建筑、纺织、包装和食品工业等领域应用广泛。聚丙烯韧性和冲击强度不高&#xff0c;限制了它的应用。加入热塑性弹性体(TPE)&#xff0c;如苯乙…

vivado安装_Vivado下载与安装指南

Vivado下载与安装指南目前&#xff0c;vivado已推出2019.1版本&#xff0c;实验室所安装的为2018.3版本&#xff0c;由于软件向下兼容的特性&#xff0c;建议安装2018版本&#xff0c;若安装2019版本&#xff0c;请自带笔记本&#xff0c;安装过程与之前没有差别&#xff0c;这…

嵌入式基于linux电机控制器,基于嵌入式Linux的移动机器人控制系统

使用select机制监控是否语音识别结果&#xff0c;在超出等待时间后&#xff0c;会退出等待并重新初始化语音模块LD3320&#xff0c;释放公共资源&#xff0c;这样也使得系统能够及时响应LD3320的MP3播放功能&#xff0c;避免了在长时间没有语音识别结果时&#xff0c;系统进入卡…

windows server 驱动精灵_还在用Windows文件共享?我来教你一键摆脱Windows海量小文件使用和备份的噩梦...

每当我问到客户&#xff0c;“你用什么存储产品作为文件共享&#xff1f;”经常听到的一个答案(自豪滴)是&#xff0c;“文件共享需要存储么&#xff1f;我们用Windows就可以做到。”Windows就是个百宝箱&#xff0c;什么都能往里装&#xff0c;就像你家冰箱一样。众所周知&…

pb 应用 迁移 linux_功能化生物炭应用研究取得系列进展

土壤营养元素流失、重金属污染是当前全球面临的突出环境问题。生物炭因其具有比表面积较大、吸附性能高和成本低等优点而在环境修复领域日益受到广泛关注&#xff0c;被作为水处理吸附剂、土壤修复改良剂广泛应用于农业土壤改良和环境中重金属的修复和钝化。但通常情况下&#…

Java命令行界面(第26部分):CmdOption

由于Tweet&#xff0c;我了解了本系列中第26个基于Java的功能强大的库&#xff0c;该库用于解析命令行参数 。 CmdOption在其GitHub主页上被描述为“一个通过注释配置的&#xff0c;用于Java 5应用程序的简单注释驱动的命令行解析器工具包。” 该项目的副标题是“命令行解析从未…

vector c++ 赋值_面对拷贝赋值时发生的自我赋值的正确态度时接受而不是防止

C.62: Make copy assignment safe for self-assignmentC.62:保证拷贝赋值对自我赋值安全Reason(原因)If x x changes the value of x, people will be surprised and bad errors will occur (often including leaks).如果xx改变了x的值&#xff0c;人们会觉得很奇怪&#xff0…

华为编程规范_华为 Java 编程规范出炉,究竟和官方文档有何不同?

来源&#xff1a;blog.csdn.net/chenleixing/article/details/441739851、引言这个标准是衡量代码本身的缺陷&#xff0c;也是衡量一个研发人员本身的价值。华为作为一家全球化的 IT 公司&#xff0c;十几万员工&#xff0c;无论是人事管理&#xff0c;还是代码管理&#xff0c…

Java命令行界面(第19部分):jClap

本系列中第19篇文章的重点是从Java代码解析命令行参数是jClap &#xff08; Java命令行参数解析器 &#xff09;&#xff0c;不应将它与称为JCLAP的库相混淆&#xff0c;而JCLAP库是我本系列先前文章的重点。 在以前的帖子覆盖JCLAP 1.4加尔斯吉尔温斯坦利&#xff08; snaq.ne…

Java命令行界面(第22部分):argparser

John Lloyd的argparser是本系列的第二十二篇有关基于Java的命令行参数解析的文章中介绍的库。 该库的主页除了提供单个源代码示例外&#xff0c;还提供了指向基于Javadoc的API文档 &#xff0c;JAR文件&#xff0c;ZIP文件和TAR文件的链接。 本帖子中使用的示例与本系列的前二十…

如何粗暴地下载huggingface_hub指定数据文件

参考这里&#xff1a; https://huggingface.co/docs/huggingface_hub/guides/download 可见下载单个文件&#xff0c;下载整个仓库文件都是可行的。 这是使用snapshot_download下载的一个例子&#xff1a; https://qq742971636.blog.csdn.net/article/details/135150482 sn…

顺序表输入栈元素c语言,C语言数据结构之栈简单操作

C语言数据结构之栈简单操作实验&#xff1a;编写一个程序实现顺序栈的各种基本运算&#xff0c;并在此基础上设计一个主程序&#xff0c;完成如下功能&#xff1a;(1)初始化顺序栈(2)插入元素(3)删除栈顶元素(4)取栈顶元素(5)遍历顺序栈(6)置空顺序栈分析:栈的顺序存储结构简称…

25q64存储多个数据_一篇文章看懂,存储虚拟化在不同用例中的实践与优势

存储虚拟化是一种对物理存储资源进行抽象的技术&#xff0c;使其看起来像是一个集中的资源。虚拟化掩盖了管理内存、网络、服务器和存储中资源的复杂性。存储虚拟化运行在多个存储设备上&#xff0c;使它们看起来就像一个单一的存储池。这些池化的存储设备可以来自不同的供应商…

android代码画出波浪球,Android绘制波浪曲线,效果很赞的。

github地址&#xff1a;https://github.com/sddyljsx/Android-SurfView-WaveViewpackage neal.canvas;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import and…

Java命令行界面(第14部分):google-options

google-options的GitHub页面指出google-options是“来自Google&#xff08;java&#xff09;的人们的命令行参数解析库。” 该页面继续说&#xff1a;“这是Bazel Project中的命令行参数解析器。 com.google.devtools.common.options程序包已拆分为一个单独的jar&#xff0c;用…

android 输入法文本选择功能,Android的文本和输入---创建输入法(一)

输入法编辑器(IME)是让用户输入文本的控件。Android提供了一个可扩展的的输入法的框架&#xff0c;它允许应用程序给用户提供另外的输入法&#xff0c;如软键盘或语音输入。这些输入法一旦安装&#xff0c;用户就可以从系统的设置中选择他们想要使用的IME&#xff0c;并且这个设…

华为mate40RS能升级鸿蒙,mate40Pro和40RS能用上鸿蒙系统吗

[分享交流]mate40Pro和40RS能用上鸿蒙系统吗8886电梯直达huafen210861086新学乍练发表于 2020-12-18 12:30:08来自&#xff1a;HUAWEI Mate 40 Pro最新回复 2020-12-19 09:50:21如题好多人都说不能用上鸿蒙系统林泽徐独步江湖发表于 2020-12-18 12:30:52来自&#xff1a;HUAWEI…

android记事本添加图片功能,安卓手机上有什么便签app既可以写日记又可以添加照片?...

原标题&#xff1a;安卓手机上有什么便签app既可以写日记又可以添加照片&#xff1f;当前&#xff0c;有很多人一直保持着写日记的习惯&#xff0c;因为这样可以及时记录自己的成长轨迹&#xff0c;使得自己可以追寻到时光的记忆&#xff0c;但是我们记录日记的工具&#xff0c…