Desarrollamos una aplicación Java Cli, que tiene subcomandos con opciones similares. Es como svn:
svn commit -m messsage --username ARG --password ARG
svn checkout -r HEAD --username ARG --password ARG
Quiero decir que cada subcomando tiene argumentos especiales, y también tenemos argumentos globales, y tenemos algunos argumentos que son relevantes para algunos subcomandos, pero no para todos.
¿Qué analizador de argumentos de línea de comando admite esos requisitos?
gracias.
picocli admite subcomandos anidados a una profundidad arbitraria.
CommandLine commandLine = new CommandLine(new MainCommand())
.addSubcommand("cmd1", new ChildCommand1()) // 1st level
.addSubcommand("cmd2", new ChildCommand2())
.addSubcommand("cmd3", new CommandLine(new ChildCommand3()) // 2nd level
.addSubcommand("cmd3sub1", new GrandChild3Command1())
.addSubcommand("cmd3sub2", new GrandChild3Command2())
.addSubcommand("cmd3sub3", new CommandLine(new GrandChild3Command3()) // 3rd
.addSubcommand("cmd3sub3sub1", new GreatGrandChild3Command3_1())
.addSubcommand("cmd3sub3sub2", new GreatGrandChild3Command3_2())
// etc
)
);
También te puede interesar su ayuda de uso con estilos y colores ANSI.
Tenga en cuenta que la ayuda de uso enumera los subcomandos registrados además de las opciones y los parámetros posicionales.
La ayuda de uso se puede personalizar fácilmente con anotaciones.
De la información limitada en su pregunta, lo siguiente parece coincidir con sus necesidades.
JOpt Simple es una biblioteca de Java para analizar las opciones de la línea de comandos, como las que podría pasar a una invocación de javac.
En aras de luchar por la simplicidad, JOpt Simple intenta respetar las sintaxis de opciones de línea de comandos de POSIX getopt() y GNU getopt_long() . También tiene como objetivo hacer que la configuración del analizador de opciones y la recuperación de opciones y sus argumentos sean simples y expresivos, sin ser demasiado inteligente.
La página web de JOpt Simple también enumera una serie de otros analizadores de línea de comandos de Java que también pueden ser adecuados si JOpt Simple no es lo suficientemente sofisticado para usted:
Aquí hay algunas bibliotecas que realizan las mismas funciones que JOpt Simple:
JArgs Jakarta Commons CLI TE-Code has a command line parsing library. argparser Java port of GNU getopt Args4J JSAP CLAJR CmdLn JewelCli JCommando parse-cmd JCommander plume-lib Options
El sitio web contiene enlaces para lo anterior si desea investigarlos más a fondo.
Fuente JOpt Simple
La biblioteca CLI de Apache Commons proporciona una API para analizar las opciones de la línea de comandos que se pasan a los programas. También puede imprimir mensajes de ayuda que detallan las opciones disponibles para una herramienta de línea de comandos.
Commons CLI admite diferentes tipos de opciones:
- Opciones similares a POSIX (es decir, tar -zxvf foo.tar.gz)
- GNU como opciones largas (es decir, du --human-readable --max-depth=1)
- Propiedades similares a Java (es decir, java -Djava.awt.headless=true -Djava.net.useSystemProxies=true Foo)
- Opciones cortas con valor adjunto (es decir, gcc -O2 foo.c)
- opciones largas con un solo guión (es decir, ant -projecthelp)
Un mensaje de ayuda típico que muestra la CLI de Commons tiene este aspecto:
usage: ls -A,--almost-all do not list implied . and .. -a,--all do not hide entries starting with . -B,--ignore-backups do not list implied entried ending with ~ -b,--escape print octal escapes for nongraphic characters --block-size <SIZE> use SIZE-byte blocks -c with -lt: sort by, and show, ctime (time of last modification of file status information) with -l:show ctime and sort by name otherwise: sort by ctime -C list entries by columns
Fuente CLI de Apache Commons
remolcador