Groupes requirejs de la CLI de Commons

J’écris une application en ligne de commande en Java et j’ai choisi Apache Commons CLI pour parsingr les arguments en entrée.

Disons que j’ai deux options obligatoires (à savoir. -Input et -output). Je crée un nouvel object Option et définit le drapeau requirejs. Pour l’instant, tout va bien. Mais j’ai une troisième option , pas obligatoire , à savoir. -Aidez-moi. Avec les parameters que j’ai mentionnés, lorsque l’utilisateur souhaite afficher de l’aide (utilisez l’option -help), il dit que “-input et -output” sont requirejs. Y a-t-il un moyen de l’implémenter (via l’API CLI Commons, pas simple si (! HasOption) lance une nouvelle XXXException ()).

Dans cette situation, vous devez définir deux ensembles d’options et parsingr deux fois la ligne de commande. Le premier ensemble d’options contient les options qui précèdent le groupe requirejs (généralement --help et --version ), et le second ensemble contient toutes les options.

Vous commencez par parsingr le premier ensemble d’options, et si aucune correspondance n’est trouvée, vous passez au deuxième ensemble.

Voici un exemple:

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