从Commons CLI迁移到Picocli

为何迁移?

从Commons CLI迁移到Picocli值得吗?从一个命令行解析器移动到另一个命令行解析器有什么好处?这不只是重新装修我们应用程序的起居室吗?

最终用户体验

最终用户有哪些好处?

命令行完成。基于Picocli的应用程序可以在bash和zsh shell以及基于JLine的交互式shell应用程序中完成命令行。

美观,高度可读的用法帮助信息。Commons CLI生成的使用帮助有点简约。开箱即用,Picocli生成帮助,使用ANSI样式和颜色进行对比,以强调重要信息,如命令,选项和参数。使用注释可以轻松自定义帮助消息布局。此外,还有一个帮助API,以防您想要不同的东西。有关示例屏幕截图,请参阅Picocli 自述文件。

通过@ -files或“参数文件 ” 支持非常大的命令行。有时,用户需要指定比操作系统或shell支持的命令行更长的命令行。当Picocli遇到以字符开头的参数时,它会将该文件的内容扩展到参数列表中。这允许应用程序处理任意长度的命令行。@

开发经验

作为开发人员,您有什么好处?

通常,Picocli应用程序的代码少于 Commons CLI等效代码。Picocli注释允许应用程序以声明方式定义选项和位置参数,其中所有信息都在一个位置。此外,Picocli提供了许多便利,如类型转换和自动帮助,可以处理一些机制,因此应用程序可以更专注于业务逻辑。本文的其余部分将更详细地说明这一点。

文档:Picocli有一个广泛的用户手册和详细的javadoc。

故障排除。Picocli具有内置的跟踪功能,便于故障排除。最终用户可以使用系统属性picocli.trace来控制跟踪级别。支持的水平OFFWARNINFO,和DEBUG。默认跟踪级别为WARN

未来的扩张

最后,除了立即支付之外,从Commons CLI迁移到Picocli还有未来的好处吗?

Picocli有许多高级功能。您的应用程序可能尚未使用这些功能,但如果您希望将来扩展您的应用程序,Picocli支持嵌套子命令(以及任何深度的子命令),mixin可以重用,可以轻松地与依赖注入容器集成,以及有一个不断增长的工具框架,用于从Picocli CommandSpec模型生成源代码,文档和配置文件。

最后,Picocli得到了积极的维护,而Commons CLI似乎已接近休眠状态,16年内发布了6个版本。

使用CheckStyle进行迁移的示例

命令行应用程序需要做三件事:

  1. 定义支持的选项

  2. 解析命令行参数

  3. 处理结果

让我们比较一下如何在Commons CLI和Picocli中完成,使用CheckStyle的com.puppycrawl.tools.checkstyle.Main命令行实用程序作为示例。

迁移之前和之后的完整源代码都在GitHub上。

定义选项和位置参数

使用Commons CLI定义选项

Commons CLI有多种方法来定义选项:在此对象上Options.addOption构建new Options(…)和调用方法,不推荐使用的OptionBuilder类和推荐的Option.Builder类。

Checkstyle Main类使用该Options.addOption方法。首先为选项名称定义一些常量:

/ **选项's
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值