2017-01-02 4 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

  • 、アノテーションベースの
  • のgit-スタイルのサブコマンド
  • ネストされたサブサブコマンド
  • 強く型付けされたオプションパラメータ
  • 強く型付けされた位置パラメータ
  • カスタマイズ型変換
  • GNUスタイルのロングオプション
  • ANSIカラーのいずれかのオプションの接頭辞を可能にどのように多くの引数フィールドは
  • 流暢APIを消費
  • POSIXスタイルのクラスタ化された短いオプションのための多値オプション
  • 直感的なモデル使用方法ヘルプ
  • カスタマイズ可能な使用方法
  • 単一ソースファイル:アプリケーションを単一のjarファイルにするためにインクルードする
関連する問題