2017-04-13 4 views
0

すべてのコマンドについて、特定のインタフェースを実装する具体的なクラスがあります。たとえば :コマンドの説明を設定する方法ですが、オプションはありません

public class FooCommand implements Command{ 

    @Parameter(names = {"-?","--help"}, description = "display this help",help = true) 
    private boolean helpRequested = false; 
    ... 
} 

そして、これは私が取得する使用方法のメッセージです:

私は(ただし、オプションに)コマンドに説明を追加することができますどのように
Usage: foo-command [options] 
    Options: 
    -?, --help 
     display this help 

。たとえば、私は、このような使用方法のメッセージを取得したい:

Usage: foo-command [options] - This command is used as base foo 
    Options: 
    -?, --help 
     display this help 

EDITは私がfoo-コマンド、BOO-コマンド、ララ・コマンドを持っています。しかし、これらのコマンドはすべて別々のもので、1つのメインコマンド内にはありません(これはgit cloneとは異なります...)。 これは、私はスニペットは、あなたが探しているもののための出発点であるかもしれない以下の使用

JCommander jCommander=new JCommander(command, args); 
jCommander.setProgramName(commandName);//for example foo-command 
StringBuilder builder=new StringBuilder(); 
jCommander.usage(builder); 

答えて

2

を得る方法です。

@Parameters(commandDescription = "foo-command short description") 
public class FooCommand implements Command { 

    @Parameter(names = {"-?", "--help"}, description = "display this help", 
     help = true) 
    private boolean helpRequested = false; 

    @Parameter(description = "This command is used as base foo") 
    public List<String> commandOptions; 

    // your command code goes below 
} 


public class CommandMain { 

    public static void main(String[] args) { 
     JCommander jc = new JCommander(); 
     jc.setProgramName(CommandMain.class.getSimpleName()); 
     FooCommand foo = new FooCommand(); 
     jc.addCommand("foo-command", foo); 
     // display the help 
     jc.usage(); 
    } 
} 

出力

Usage: CommandMain [options] [command] [command options] 
    Commands: 
    foo-command  foo-command short description 
     Usage: foo-command [options] This command is used as base foo 
     Options: 
      -?, --help 
      display this help 
      Default: false 

も見ています:JCommander command syntax

編集はコマンド自体の説明を表示します。この場合、FooCommandの注釈@Parameters(commandDescription = "foo-command short description")を省略することができます。

Usage: foo-command [options] This command is used as base foo 
    Options: 
    -?, --help 
     display this help 
     Default: false 
+0

Command command = new FooCommand(); JCommander jc = new JCommander(command, args); jc.setProgramName("foo-command"); StringBuilder builder = new StringBuilder(); jc.usage(builder); System.out.println(builder); 

出力は、あなたの答えをいただき、ありがとうございます。しかし、私はCommandMainは必要ありません。私は "メイン"なしで別のコマンドを持っています –

+0

@Pavelコマンドのメインは[MCVE](http://stackoverflow.com/help/mcve)を提供するためにあります。その場合は、あなたのコードのより良い例を質問に入れるべきでしょう。 – SubOptimal

+0

私の編集をご覧ください。 –

関連する問題