programacion example commons cli java command-line-interface apache-commons apache-commons-cli

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 ()).