对于用Java编写命令行应用程序,解析和管理参数和参数的最佳库是什么?

注意:此问题是Stack Overflow上此封闭问题的更新版本。

评论

起初我不确定是否允许这个问题,但是确实如此。但是,当您链接到关于SO的一个很好回答的问题时,我仍然怀疑它在这里的价值。

我将问题移至此处的原因是,该问题仍然相关,但是由于不合适,因此SO问题已被关闭。这是一个合适的住所,问题可以保留为“活着”。

封闭式问题仍然可用meta.stackexchange.com/questions/19231/…

#1 楼

picocli与其他Java CLI库不同:


它旨在包含在源代码形式中。这样一来,用户就可以运行基于picocli的应用程序,而无需picocli作为外部依赖项。
在基础平台支持的情况下,使用ANSI颜色生成精巧的定制使用帮助。

Java自动完成受支持平台上的命令行应用程序

示例用法帮助消息:



快速概述:


轻松的命令行解析-只需注释字段
严格键入所有内容-命令行选项以及位置参数
全面支持GNU样式和POSIX集群短选项(因此它可以处理<command> -xvfInputFile<command> -x -v -f InputFile
允许最小,最大和可变数量的参数(例如"1..*""3..5")的Arity模型

子命令
可与Java 5及更高版本配合使用
结构合理用户手册


使用帮助是您应用程序的面子,因此请发挥创造力并尽情玩乐!



更新:

Picocli也得到了积极维护。从原始帖子开始,添加了许多新功能,例如:


程序化API以及注释API
依赖注入容器集成
JLine集成:委托给可以使用@Option@Parameters注释命令的Completer实现的AutoComplete接口方法(picocli创建返回匹配选项的综合实现)
可以使用@Option@Parameters注释类方法(因此您可以验证选项和位置参数)
支持@Command方法以实现更紧凑的代码
与资源束进行国际化


免责声明:我是作者。

评论


我已将picocli的选项管理添加到项目中,并且与我的项目集成非常容易。看起来不错,并且具有我打算在以后添加的更多高级功能。

–已结盟
18-09-14在16:42

#2 楼

我建议使用JOpt Simple。它“试图遵循POSIX getopt()和GNU getopt_long()的命令行选项语法”。它具有社区吸引力,尤其是命令行解析OpenJDK本身的首选库。

为了进行比较,这是一个相对最新的(截至2015年1月)相关服务库的列表。目的。



picocli(具有ANSI颜色和自动完成功能)
JArgs
Jakarta Commons CLI

TE代码(它具有命令行解析库。)
argparser
GNU的Java端口getopt
Args4J
JSAP
JOpt Simple
CLAJR
CmdLn
JewelCli
JCommando
parse-cmd
JCommander


评论


我刚刚尝试了Commons CLI库,发现使用它非常令人沮丧,切换到JCommander并没有后悔!使用Commons CLI来完成诸如接受未知选项之类的简单操作非常可笑。另一方面,它是JCommander的一线工具。

–阿迪尔·侯赛因(Adil Hussain)
17年5月23日在12:55

请看看picocli。它易于使用,功能丰富。

–雷姆科·波玛(Remko Popma)
'18 Sep 8'在3:18

#3 楼

我的选择是JCommander。

自2016年10月起,必须启动一个新项目,并最终决定以明智的方式进行论证。只是比较了Jopt-simple,JCommander和args4j。

选择原因:只有JCommander和args4j带有注释,只有JOpt-simple和JCommander具有出色的教程。