Estoy escribiendo una aplicación Java que toma argumentos de la línea de comandos que se procesan utilizando Apache Commons CLI con GnuParser. Por razones que no son interesantes, me gustaría ignorar silenciosamente las opciones de línea de comando desconocidas en lugar de lanzar una ParseException, pero no veo una manera de hacerlo. Veo que hay una opción booleana stopAtNonOption en GnuParser.parse() pero lo que quiero es más como ignoreAtNonOption, donde se seguirán procesando las opciones después de encontrar un token desconocido.¿Puede el analizador de opciones de la CLI de Apache Commons ignorar opciones de línea de comando desconocidas?
Podría implementar mi propio analizador para lograr esto, pero me sorprende que no haya esta funcionalidad incorporada, así que pensé en verificar antes de seguir por ese camino.
Código de ejemplo para lo que estoy hablando:
try {
CommandLine commandLine = parser.parse(options, args);
// stopAtNonOption set to true (below) is also not what I want
// CommandLine commandLine = parser.parse(options, args, true);
} catch (ParseException e) {
LOG.error("error parsing arguments", e);
throw new RuntimeException(e);
}
Eso es hermoso, gracias! Por cierto, esto debería ser una nota para los diseñadores de API sobre por qué definitivamente no quieres que tus clases de API sean definitivas. ¿Por qué? Porque no eres lo suficientemente inteligente como para descubrir todas las formas en que el código del cliente quisiera reutilizar tus cosas. –
He hecho lo mismo para BasicParser. ¡Trabajado como un encanto!. Definitivamente debería ser agregado a la API cli. – Dudi
Esto ahora está en desuso :(. – Decoded