我们开发了一个Java Cli应用程序,它具有带有类似选项的子命令。 它就像svn:
svn commit -m messsage --username ARG --password ARG
svn checkout -r HEAD --username ARG --password ARG
我的意思是每个子命令都有特殊的参数,我们也有全局参数,我们有一些参数对某些子命令是相关的,但不适用于所有子命令。
哪个命令行参数解析器支持该要求?
谢谢。答案 0 :(得分:5)
picocli支持任意深度的嵌套子命令。
main命令定义全局选项,每个以下级别的嵌套命令都可以添加仅适用于该级别的选项。
CommandLine commandLine = new CommandLine(new MainCommand())
.addSubcommand("cmd1", new ChildCommand1()) // 1st level
.addSubcommand("cmd2", new ChildCommand2())
.addSubcommand("cmd3", new CommandLine(new ChildCommand3()) // 2nd level
.addSubcommand("cmd3sub1", new GrandChild3Command1())
.addSubcommand("cmd3sub2", new GrandChild3Command2())
.addSubcommand("cmd3sub3", new CommandLine(new GrandChild3Command3()) // 3rd
.addSubcommand("cmd3sub3sub1", new GreatGrandChild3Command3_1())
.addSubcommand("cmd3sub3sub2", new GreatGrandChild3Command3_2())
// etc
)
);
您可能也喜欢ANSI样式和颜色的使用帮助。
除了选项和位置参数外,用法帮助还列出了已注册的子命令。
可以使用注释轻松自定义使用帮助。