如何配置picocli在每次执行前均显示使用信息?
在无类Groovy脚本中让picocli每次执行都显示使用信息
picocli本身没有内置的“始终显示帮助”配置项,但可以通过两种简单方式实现需求:
方法一:手动打印帮助信息
在脚本完成业务逻辑后,显式调用picocli的帮助打印方法,不管参数是否合法都执行这一步。
示例脚本:
@Grab('info.picocli:picocli:4.6.3') import picocli.CommandLine import picocli.CommandLine.* // 脚本级别的picocli注解配置 @Command( name = 'greet', description = '一个简单的问候脚本', mixinStandardHelpOptions = true // 自带-h/--help选项 ) @Option(names = ['-n', '--name'], required = true, description = '要问候的名字') String userName // 执行业务逻辑 println "哈喽,$userName!" // 手动打印使用帮助 def cli = new CommandLine(this) cli.usage(System.out)
执行效果:哪怕传入了必填的--name参数,脚本执行后也会输出完整的使用信息。
方法二:自定义执行策略
如果想在业务逻辑执行前就显示帮助,可以自定义picocli的执行流程,比如在解析参数后立即打印帮助:
@Grab('info.picocli:picocli:4.6.3') import picocli.CommandLine import picocli.CommandLine.* @Command( name = 'greet', description = '一个简单的问候脚本', mixinStandardHelpOptions = true ) @Option(names = ['-n', '--name'], required = true, description = '要问候的名字') String userName def cli = new CommandLine(this) // 先解析参数 ParseResult parseResult = cli.parseArgs(args) // 打印帮助信息 cli.usage(System.out) // 执行命令逻辑(如果参数合法) if (!parseResult.isHelpRequested()) { println "哈喽,$userName!" }
这种方式会先输出帮助信息,再执行业务逻辑,适合需要用户每次都看到使用说明的场景。
注意事项:
- 确保引入的picocli版本兼容(示例用的是4.6.3,可根据需要调整)
- 如果脚本有错误参数,picocli依然会自动输出错误信息和帮助,不会冲突
内容的提问来源于stack exchange,提问作者Asif Kamran Malick
相关产品推荐
相关产品推荐

