2017-01-02 65 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顏色使用幫助
  • 可自定義使用幫助
  • 單一源文件:包含源代碼以保持您的應用程序單個罐子