Commandline basato su annotazioni, consente regole complesse per la combinazione di argomenti (sequenze, annidamento, argomenti, tipi, ...) ed è ragionevolmente ben documentato.
Per usarlo, aggiungere
<dependency>
<groupId>com.github.jankroken</groupId>
<artifactId>commandline</artifactId>
<version>1.7.0</version>
</dependency>
al vostro pom, e dichiarare le opzioni disponibili come segue:
public class CommandOptions {
private List<String> commands = null;
private boolean parameter = false;
private boolean url = true;
private boolean help = false;
@LooseArguments
public void setCommands(List<String> commands) {
this.commands = commands;
}
@LongSwitch("parameter")
@Toggle(true)
public void setParameter(boolean parameter) {
this.parameter=parameter;
}
@LongSwitch("noURL")
@Toggle(false)
public void setUrl(boolean url) {
this.url = url;
}
@longSwitch("help")
@Toggle(true)
public void setHelp(boolean help) {
this.help = help;
}
// getters
}
e quindi di analizzare in realtà la linea di comando, fare
public final static void main(String[] args) {
try {
CommandOptions options = CommandLineParser.parse(CommandOptions.class, args, OptionStyle.SIMPLE);
// and then you can pass options to your application logic...
} catch
...
}
}
nota che non contiene (ancora) un testo di guida generato automaticamente. Questo è stato prototipato, ma abortito. È facile generare un testo di aiuto di base per casi semplici, ma per configurazioni più complesse (come le opzioni disponibili per un'applicazione come "trova" o "gcc"), il risultato non sarà carino e probabilmente preferirai controlla tu stesso il layout.
Strettamente legata domanda più vecchio: http://stackoverflow.com/questions/435740/are-there-good-java-libraries-that-facilitate-building-command-line-applications – Jonik
possibile duplicato del [C'è un buon parser argomento riga di comando per Java?] (http://stackoverflow.com/questions/367706/is-there-a-good-command-line-argument-parser-for-java) –
Questa è una buona domanda che merita di essere su http://softwarerecs.stackexchange.com/. –