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

cli parser

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

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

cli parser

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

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

相关文章

写一个sql实现以下查询结果_书写高质量SQL的30条建议

以下文章来源&#xff1a;后端程序员必备&#xff1a;书写高质量SQL的30条建议1、查询SQL尽量不要使用select *&#xff0c;而是select具体字段。反例子&#xff1a;select * from employee;正例子&#xff1a;select id&#xff0c;name from employee;理由&#xff1a;只取需…

Linux 命令之 sed -- 功能强大的流式文本编辑器

文章目录一、命令介绍二、命令格式三、常用选项四、sed 子命令五、sed 替换标记六、sed 元字符集七、命令示例&#xff08;一&#xff09;用指定的字符串替换掉指定的字符串&#xff08;二&#xff09;删除文档中的空白行&#xff08;三&#xff09;删除文档中的注释&#xff0…

flatmap_flatMap()与concatMap()与concatMapEager()– RxJava常见问题解答

flatmapRxJava 2.x中共有三个无缝相似的运算符&#xff1a; flatMap() &#xff0c; concatMap()和concatMapEager() 。 它们都接受相同的参数-从原始流的单个项目到任意类型的&#xff08;子&#xff09;流的函数。 换句话说&#xff0c;如果您有Flowable<T>则可以为任意…

java 中的点_java————形参中的点点点 | 学步园

转自:http://zhidao.baidu.com/question/149668626.htmlmain方法的签名其实可以这样写:public static void main(String... args)//方法1它也可以运行.并且,如果同时还存在public static void main(String[] args)//方法2会报已经存在重复的方法的错误.由此可见,String... args…

sendkeys.send 始终输出英文._PLC的三种输出方式,你知道有哪些吗?

电工技术维修学习网&#xff1a;www.dgjswx.com关注电工技术维修学习网官方微信公众号《电工维修学习》收获更多电工经验知识和提升实战技能电工技术&#xff0c;电气知识&#xff0c;电工基础知识&#xff0c;电工入门知识&#xff0c;电工资料&#xff0c;电工软件&#xff0…

Linux 命令之 echo -- 输出指定的字符串或者变量的值

文章目录一、命令介绍二、命令选项三、命令示例&#xff08;一&#xff09;输出变量的值&#xff08;二&#xff09;合并上下单元格内容&#xff08;三&#xff09;查看一行第一栏&#xff08;四&#xff09;查看一行的第一和第三栏&#xff08;五&#xff09;结合输出重定向符…

java 死循环排查_java应用死循环排查方法或查找程序消耗资源的线程方法(面试)...

今天遇到一个面试&#xff0c;怎么在一堆线程中查找一个死循环&#xff1f;如果遇到线上应用cpu飙升&#xff0c;并出现OutOfMemery怎么办&#xff1f;首先线上应用的jvm配置要养成良好的习惯&#xff0c;增加一下配置则可以在jvm发生 oom的时候自动dump日志了 -XX:HeapDumpOn…

jw摄像_Java命令行界面(第17部分):jw-options

jw摄像JavaWorld的文章“ 用Java处理命令行参数”&#xff1a; Matthias Laux博士关闭的案例介绍了一个简单的基于Java的库&#xff0c;用于处理命令行参数 &#xff0c;我在本文中将其称为jw-options 。 被引用的文章提供了有关为何在构造Options类时做出某些设计决策的背景信…

pixel和毫米怎么换算_压力传感器相关压力单位换算

压力传感器的应用已经很普遍了&#xff0c;压力传感器各个单间之间应该怎么换算呢&#xff0c;这个问题困扰着很多的客户&#xff0c;今天呢我们就来说一下它们之间的换算。在实际的工程应用中&#xff0c;压强单位常被当作压力单位。比较常见的压力单位包括&#xff1a;bar、K…

Linux 命令之 lsof -- 列出当前系统已打开的文件列表

文章目录命令介绍常用选项字段说明文件类型文件描述符文件状态模式锁模式参考示例&#xff08;一&#xff09;查看打开指定文件的所有进程&#xff08;二&#xff09;列出由某个 PID 对应的进程打开的所有文件&#xff08;三&#xff09;查看指定名称的进程所打开的文件列表&am…

mongodb json_在MongoDB和Spring Batch中将XML转换为JSON和原始使用

mongodb json总览 为什么将XML转换为JSON以在MongoDB中原始使用&#xff1f; 由于MongoDB使用JSON文档存储记录&#xff0c;就像表和行将记录存储在关系数据库中一样&#xff0c;我们自然需要将XML转换为JSON。 某些应用程序可能需要存储原始&#xff08;未修改的&#xff09;…

java串口发送16进制数据_MFC串口通信发送16进制数据的方法

本文实例为大家分享了MFC串口通信发送16进制数据的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下MFC串口通信会使用m_mscomm控件。发送数据一般是在edit control 里输入自己想发送的内容&#xff0c;然后点击send button。如果直接发送字符串内容&#xff0c;通过下…

Linux 命令之 du -- 显示每个文件和目录的磁盘使用空间/所占用的磁盘空间大小/所使用的磁盘空间大小/查看文件和目录的大小

文章目录命令介绍常用选项参考示例&#xff08;一&#xff09;显示当前目录下的所有子目录和文件所占空间&#xff08;二&#xff09;查看指定文件所占空间的大小&#xff08;三&#xff09;查看指定目录的所占空间&#xff08;四&#xff09;查看多个文件所占空间&#xff08;…

vue 侦听器侦听对象属性_Spring中的异步和事务性事件侦听器

vue 侦听器侦听对象属性内置的事件发布功能从Spring的早期版本开始存在&#xff0c;并且对于处理同一应用程序上下文中Spring组件之间的基本通信仍然有用。 通常&#xff0c;应用程序可以生成应用程序事件&#xff08;可以是任意对象&#xff09;并监听它们。 整个机制非常简单…

mac tomcat java_Mac下配置Java开发环境(JDK1.8)和Tomcat服务器

平时做PHP,装的有nginx,mysql这儿就不多说了&#xff0c;可以看前面的相关文章&#xff0c;用的brew配置的&#xff0c;超简单。 今天介绍一下Java相关的配置 Java官网下载&#xff1a;http://www.oracle.com/technetwork/java/javase/downloads/index.html 我这儿下载的是Java…

python集合和字典的区别_Python中的字典和集合

导语&#xff1a;本文章记录了本人在学习Python基础之数据结构篇的重点知识及个人心得&#xff0c;打算入门Python的朋友们可以来一起学习并交流。 本文重点&#xff1a; 1、掌握常见的字典创建&#xff0c;查询&#xff0c;判别方法&#xff1b; 2、了解字典中的defaultdict、…

Linux 命令之 df -- 显示磁盘空间使用情况

文章目录命令介绍常用选项大小格式参考示例&#xff08;一&#xff09;查看系统磁盘设备的使用情况&#xff08;二&#xff09;显示指定文件所在分区的磁盘使用情况&#xff08;三&#xff09;显示文件类型为ext4的磁盘使用情况命令介绍 df 命令的英文全称即“Disk Free”&…

apache ignite_Apache Ignite本机持久性,简要概述

apache ignite通过将数据的工作集放入系统内存中&#xff0c;内存中方法可以达到极高的速度。 当所有数据都保存在内存中后&#xff0c;就不再需要处理使用传统旋转磁盘引起的问题。 例如&#xff0c;这意味着无需维护数据的其他缓存副本并管理它们之间的同步。 但是这种方法还…

java编程九九乘法表_如何用JAVA语言编写一个九九乘法表

教一下学了JAVA語言的同学们撰写一个99玖玖乘决表方法进行设计构思&#xff1a;假如把99玖玖乘决报表中如“1*11”算式全部当作一个一字的笔画体得话&#xff0c;99玖玖乘决表可当作一个倾斜角二五长方形形&#xff0c;进行倾斜角二五长方形形可用两个for循环系统软件嵌套循环来…

python tkinter 安装_如何为Python安装tkinter?

如果你和我一样&#xff0c;由于你在I.S中的好朋友而在你的网络上没有根目录特权&#xff0c;而且你是在本地安装中工作的&#xff0c;你可能会在上面的方法上遇到一些问题。 我在谷歌上花了很长时间--但最终&#xff0c;这很容易。 要在Linux上本地安装(我将其安装到我的主目录…