java - example - commons cli required option
Commons CLI requiere grupos (1)
En esta situación, debe definir dos conjuntos de opciones y analizar la línea de comandos dos veces. El primer conjunto de opciones contiene las opciones que preceden al grupo requerido (generalmente --help
y --version
), y el segundo conjunto contiene todas las opciones.
Comienza analizando el primer conjunto de opciones y, si no se encuentra ninguna coincidencia, continúas con el segundo conjunto.
Aquí hay un ejemplo:
Options options1 = new Options();
options1.add(OptionsBuilder.withLongOpt("help").create("h"));
options1.add(OptionsBuilder.withLongOpt("version").create());
// this parses the command line but doesn''t throw an exception on unknown options
CommandLine cl = new DefaultParser().parse(options1, args, true);
if (!cl.getOptions().isEmpty()) {
// print the help or the version there.
} else {
OptionGroup group = new OptionGroup();
group.add(OptionsBuilder.withLongOpt("input").hasArg().create("i"));
group.add(OptionsBuilder.withLongOpt("output").hasArg().create("o"));
group.setRequired(true);
Options options2 = new Options();
options2.addOptionGroup(group);
// add more options there.
try {
cl = new DefaultParser().parse(options2, args);
// do something useful here.
} catch (ParseException e) {
// print a meaningful error message here.
}
}
Estoy escribiendo una aplicación de línea de comandos en Java y elegí la CLI de Apache Commons para analizar los argumentos de entrada.
Digamos que tengo dos opciones requeridas (es decir, -input y -output). Creo un nuevo objeto de Opción y configuro la bandera requerida. Por ahora todo está bien. Pero tengo la tercera, no requiere opción , es decir. -ayuda. Con las configuraciones que he mencionado, cuando el usuario desea mostrar ayuda (use la opción -help) dice que se requieren "-input and -output". ¿Hay alguna forma de implementar esto (a través de la API de CLI de Commons, no es simple si (! HasOption) lanza una nueva XXXException ()).