如何让PicoCLI将选项后后续项解析为字符串而非标志
PicoCLI让选项接受连字符开头参数的解决方法
你遇到的问题是PicoCLI默认会把以-开头的字符串识别为新选项,而非前一个选项的参数,导致-t -b这种写法报错。要解决这个问题,只需给-t选项添加acceptsHyphenatedValues = true配置,强制PicoCLI将连字符开头的内容当作该选项的参数。
修改后的参数定义如下:
@Option(names = "-b") String bOption; @Option(names = "-t", arity = "1..*", acceptsHyphenatedValues = true) public void checkTOption(List<String> values) { if (values != null && !values.isEmpty()) { tOption = values.get(values.size() - 1); } }
修改后执行命令:
$ my-cli -t -b -b "some value" my-file.txt
解析结果会符合预期:
- t: 字符串
"-b" - b: 字符串
"some value"
同时,原来的-t可多次指定、取最后一个值的逻辑不受影响,以下两条命令依然等价:
$ my-cli -t a -t b -b "some string" -t c my-file.txt $ my-cli -t c -b "some string" my-file.txt
内容的提问来源于stack exchange,提问作者Scott Crooks
相关产品推荐
相关产品推荐

