2010-07-22 6 views
23

Per l'analisi della riga di comando in Java, in genere utilizzo Apache Commons CLI. Qualcuno può raccomandare librerie alternative?Analisi riga di comando: alternative CLI per i comuni?

+7

Se hai intenzione di chiedere un'alternativa a quello che usi normalmente, sarebbe utile se dovessi dire quello che stai cercando che la tua opzione normale non fornisce. –

+1

Per essere onesti, non avevo in mente una particolare caratteristica mancante. È vero, Apache Commons CLI è "provato e testato", ma è anche piuttosto dettagliato. Mi stavo chiedendo se qualcuno ha introdotto nuove idee in questo settore. In questa categoria, penso che darò un'occhiata più da vicino al suggerimento di JCommander qui sotto. – Jan

+6

possibile duplicato di [C'è un buon parser di argomenti da riga di comando per Java?] (Http://stackoverflow.com/questions/367706/is-there-a-good-command-line-argument-parser-for-java) –

risposta

21

JCommander suona come un approccio molto semplice e interessante per l'analisi argomenti della riga di comando con annotazioni (dal creatore di TestNG):

di annotare i campi con le descrizioni delle opzioni:

import com.beust.jcommander.Parameter; 

public class JCommanderTest { 
    @Parameter 
    public List<String> parameters = Lists.newArrayList(); 

    @Parameter(names = { "-log", "-verbose" }, description = "Level of verbosity") 
    public Integer verbose = 1; 

    @Parameter(names = "-groups", description = "Comma-separated list of group names to be run") 
    public String groups; 

    @Parameter(names = "-debug", description = "Debug mode") 
    public boolean debug = false; 
} 

e poi chiedete semplicemente JCommander analizzare:

JCommanderTest jct = new JCommanderTest(); 
String[] argv = { "-log", "2", "-groups", "unit", "a", "b", "c" }; 
new JCommander(jct, argv); 

Assert.assertEquals(jct.verbose.intValue(), 2); 
+0

Ecco come è stato introdotto Cederic: http://beust.com/weblog/2010/07/13/announcing-jcommander-1-0/ – Jan

+0

Impossibile trovare un'API per stampare la guida. Vedi domanda correlata: http://stackoverflow.com/questions/30046171/how-to-print-help-using-jcommander –

+0

JCommander è ora qui http://jcommander.org/ – xamde

6
+0

Apprezzo questi collegamenti a quadri alternativi e devo ammettere che non ho notato questa domanda molto simile.Tuttavia, speravo di raggiungere qualcuno che * avesse provato * diverse alternative e che fosse in grado * di * raccomandare * una di queste. – Jan

+0

Nel rispetto, questo è il tipo di articolo che stavo cercando: http://furiouspurpose.blogspot.com/2008/07/command-line-parsing-libraries-for-java.html Grazie! – Jan

2

A java-source.net si possono trovare almeno 4 altre biblioteche alternative per Apache Commons CLI.

0

getopt-1.0.11 è un semplice facile da usare biblioteca leggero che ho usato una volta per arguements riga di comando parsing

4

Io personalmente uso args4J di kohsuke a https://github.com/kohsuke/args4j

+0

È anche la mia preferenza personale. args4j è più flessibile di JCommander. I principi sono gli stessi, ma è più intuitivo da usare e differenziare tra argomenti e opzioni. –

0

Si potrebbe provare commandline (bel nome anonimo, lo so)

Esso utilizza le annotazioni per mappare gli argomenti della riga di comando in un modello a oggetti. Un paio di analisi delle modalità e un insieme di annotazioni che possono essere combinate in vari modi consente di creare regole di opzione della riga di comando piuttosto avanzate.

Mentre consente di mappare gli argomenti della riga di comando direttamente sul modello di dominio, è consigliabile prendere in considerazione l'utilizzo di classi separate per gli argomenti della riga di comando.

Problemi correlati