2010-07-22 13 views
23

Para el análisis de línea de comandos en Java, normalmente uso Apache Commons CLI. ¿Alguien puede recomendar alguna biblioteca alternativa?Análisis de línea de comandos: ¿alternativas de CLI de Commons?

+7

Si va a pedir una alternativa a la que usa normalmente, sería útil si dijera lo que está buscando y que su opción normal no proporciona. –

+1

Para ser sincero, no tenía en mente una característica en particular. Es cierto que Apache Commons CLI es 'probado y probado', pero también es bastante detallado. Me preguntaba si alguien presentó alguna idea nueva en esta área. En esta categoría, creo que voy a echar un vistazo más de cerca a la sugerencia de JCommander a continuación. – Jan

+6

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) –

Respuesta

21

JCommander suena como un enfoque muy simple e interesante para analizar los argumentos de línea de comandos con anotaciones (del creador de TestNG):

realizar anotaciones campos con descripciones de sus opciones:

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; 
} 

y luego simplemente le pregunta JCommander para analizar:

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

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

Así lo presentó Cederic: http://beust.com/weblog/2010/07/13/announcing-jcommander-1-0/ – Jan

+0

No se pudo encontrar una API para imprimir la ayuda. Consulte la pregunta relacionada: http://stackoverflow.com/questions/30046171/how-to-print-help-using-jcommander –

+0

JCommander ahora está aquí http://jcommander.org/ – xamde

6

¿Le puede servir esta respuesta? How to parse command line arguments in Java?

+0

Agradezco estos enlaces a marcos alternativos y tengo que admitir que no me di cuenta de esta pregunta muy similar.Sin embargo, esperaba llegar a alguien que * realmente intentó * alternativas diferentes y que es capaz * de * recomendar * uno de esos. – Jan

+0

En el respecto, este es el tipo de artículo que estaba buscando: http://furiouspurpose.blogspot.com/2008/07/command-line-parsing-libraries-for-java.html ¡Gracias! – Jan

2

En java-source.net se pueden encontrar al menos otras 4 bibliotecas alternativas a Apache Commons CLI.

0

getopt-1.0.11 es un simple y fácil de usar biblioteca ligera he usado una vez para me lo quitaron de línea de comandos de análisis sintáctico

4

Yo personalmente uso args4J de Kohsuke en https://github.com/kohsuke/args4j

+0

También es mi preferencia personal. args4j es más flexible que JCommander. Los principios son los mismos, pero es más intuitivo de usar y diferenciar entre argumentos y opciones. –

0

Usted podría intentar commandline (bonito nombre en el anonimato, lo sé)

Utiliza anotaciones para mapear los argumentos de línea de comandos en un modelo de objetos. Un par de modos de análisis y un conjunto de anotaciones que se pueden combinar de varias maneras le permite crear reglas de opciones de línea de comandos bastante avanzadas.

Si bien le permite asignar los argumentos de la línea de comando directamente en su modelo de dominio, , debería considerar el uso de clases separadas para los argumentos de la línea de comando.

Cuestiones relacionadas