Picocli在Groovy脚本中缺失必填选项警告未显示问题排查
问题原因分析
这是picocli框架默认的校验逻辑导致的:
- picocli在解析命令行参数时,会优先处理并报告第一个遇到的参数错误,不会继续执行后续的校验步骤。
- 场景2中,
--middle-name是需要参数的可选选项(你定义时应该指定了它需要接收参数),但你只输入了选项名没传参数,这属于「选项缺少必填参数」的错误,这个错误会被picocli优先捕获并输出提示,程序因此终止,不会再去检查那些未传入的必填选项。
如果想要同时显示所有错误(包括选项参数缺失和必填选项未传),需要调整picocli的校验模式,开启收集所有错误的配置:
在你的Groovy脚本中,给picocli的命令类添加collectAllErrors = true的注解配置,同时配合相关参数确保校验能完成所有检查。示例代码如下:
@Command( name = "my-script", mixinStandardHelpOptions = true, collectAllErrors = true, // 核心配置:开启收集所有错误 stopAtPositional = false, stopAtUnmatched = false ) class MyScript implements Runnable { @Option(names = "--first-name", required = true) String firstName @Option(names = "--last-name", required = true) String lastName @Option(names = "--middle-name") // 需要参数的可选选项 String middleName @Override void run() { // 业务逻辑实现 } }
调整后,执行groovy my-script.groovy --middle-name时,就会同时输出两个错误提示:
Missing required parameter for option '--middle-name' (middleName)
Missing required options: '--first-name=firstName', '--last-name=lastName'
内容的提问来源于stack exchange,提问作者Asif Kamran Malick
相关产品推荐
相关产品推荐

