Commandline está basado en anotaciones, permite reglas complejas para combinar argumentos (secuencias, anidamiento, argumentos, tipos, ...) y está razonablemente bien documentado.
Para usarlo, añadir
<dependency>
<groupId>com.github.jankroken</groupId>
<artifactId>commandline</artifactId>
<version>1.7.0</version>
</dependency>
a su pom, y declarar las opciones disponibles de la siguiente manera:
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
}
y luego para realmente analizar la línea de comandos, haga
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
...
}
}
tenga en cuenta que aún no contiene un texto de ayuda generado automáticamente. Esto fue prototipo, pero abortado. Es fácil generar un texto de ayuda básico para casos simples, pero para configuraciones más complejas (por ejemplo, las opciones disponibles para una aplicación como "buscar" o "gcc"), el resultado no será bonito, y es probable que prefiera controla el diseño tú mismo.
Pregunta anterior muy relacionada: http://stackoverflow.com/questions/435740/are-there-good-java-libraries-that-facilitate-building-command-line-applications – Jonik
posible duplicado de [¿Hay un buen analizador de argumentos de línea de comandos para Java?] (http://stackoverflow.com/questions/367706/is-there-a-good-command-line-argument-parser-for-java) –
Esta es una buena pregunta que merece estar en http://softwarerecs.stackexchange.com/. –