2015-12-06 21 views
5

Sto cercando di ottenere che l'applicazione Dropwizard accetti gli argomenti della riga di comando personalizzati. La documentazione sembra non essere sufficiente e solo la metà spiega cosa fare. Considerando che sono nuovo a questo ho bisogno di un esempio molto chiaro dal codice per l'utilizzo della riga di comando.Come accettare gli argomenti della riga di comando personalizzati con Dropwizard

Qualcuno avrebbe voglia di condividere? Ho visto la domanda this ma non lo spiega chiaramente e non riesco a farlo funzionare.

Si prega di non chiedere esempi di codice su ciò che ho provato. Fidati di me, ho provato molto e non sono sicuro di cosa pubblicare esattamente quando la maggior parte del codice è scomparsa. Se sai come fare questo non dovrebbe richiedere molto tempo per rispondere. Grazie.

risposta

5

Sto usando l'esempio indicato nel manuale. Se è necessario ottenere il seguente risultato, è possibile farlo con il codice fornito. Fammi sapere se hai bisogno di qualcosa di più specifico.

Input: java -jar <your-jar> hello -u conor 
Output: Hello conor 

Non sono sicuro di quale versione di dropwizard si sta utilizzando. Questo è per 0.9.1

principale Classe

public class MyApplication extends Application<MyConfiguration> { 
    public static void main(String[] args) throws Exception { 
    { 
     new MyApplication().run(args); 
    } 
    } 

    @Override 
    public void initialize(Bootstrap<DropwizardConfiguration> bootstrap) { 
    bootstrap.addCommand(new MyCommand()); 
    } 

    @Override 
    public void run(ExampleConfiguration config, 
        Environment environment) { 
    } 
} 

MyCommand.java

public class MyCommand extends Command { 
    public MyCommand() {   
    super("hello", "Prints a greeting"); 
    } 

    @Override 
    public void configure(Subparser subparser) { 
    // Add a command line option 
    subparser.addArgument("-u", "--user") 
     .dest("user") 
     .type(String.class) 
     .required(true) 
     .help("The user of the program"); 
    } 

    @Override 
    public void run(Bootstrap<?> bootstrap, Namespace namespace) throws Exception { 
    System.out.println("Hello " + namespace.getString("user")); 
    } 
} 

Riferimento: http://www.dropwizard.io/0.9.1/docs/manual/core.html#man-core-commands

0

public class TestCommand estende Istruzione {

public TestCommand() { 
    super("commandName", "CommandDesc"); 
} 

@Override 
public void configure(Subparser subparser) { 
    subparser.addArgument("-ct", "--commandTest").dest("Dest").type(String.class).required(true) 
      .help("command test"); 
} 

@Override 
public void run(Bootstrap<?> bootstrap, Namespace namespace) throws Exception { 
    System.out.println("command to test -> " + namespace.getString("Dest")); 
} 

}

Eseguire il codice: CommandName -ct dwizard come args
uscita: comando per verificare -> dwizard

Se avete scritto una classe che estende la classe "Command" o simili, allora il seguente comando dovrebbe funzionare commandName {command} {command arg}