2017-01-02 63 views
2

我们开发了一个Java Cli应用程序,它具有类似选项的子命令。 这就像SVN:带有类似选项的子命令的Java命令行解析器

svn commit -m messsage --username ARG --password ARG 
svn checkout -r HEAD --username ARG --password ARG 

我的意思是,每个子具有特殊的参数,我们也有争论全球,我们有一些参数是relvant一些子命令,但并不适用于所有。

哪个命令行参数解析器支持该要求?

谢谢。

+0

这个问题是堆栈溢出题外。改为尝试[SE软件建议](http://softwarerecs.stackexchange.com/)。 – RealSkeptic

+0

谢谢。 http://softwarerecs.stackexchange.com/questions/38519/java-command-line-parser-with-subcommands-that-have-similiar-options –

回答

2

picocli支持将嵌套子命令设置为任意深度。

主命令定义全局选项,每个嵌套命令的级别都可以添加仅适用于该级别的选项。

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样式和颜色的使用帮助。

除了选项和位置参数之外,用法帮助还列出了注册的子命令。

enter image description here

的使用帮助,很容易与注释定制。

enter image description here

  • 基于注解
  • 混帐风格子
  • 嵌套子子
  • 强类型选项参数
  • 强类型的位置参数
  • 自定义类型转换
  • 多值选项
  • 一个字段有多少争论消耗
  • 流利的API
  • POSIX风格的集群短选项
  • GNU风格的长选项
  • 直观的模型允许任何选项前缀
  • ANSI颜色使用帮助
  • 可自定义使用帮助
  • 单一源文件:包含源代码以保持您的应用程序单个罐子