Parsing della riga di comando in Java con args4j

Parsing della riga di comando in Java con args4j

args4j è una delle varie librerie per eseguire il parsing della riga di comando in Java.

Se usate Maven aggiungete questo al vostro pom.xml:

        <dependency>
            <groupId>args4j</groupId>
            <artifactId>args4j</artifactId>
            <version>2.33</version>
        </dependency>

Fatto questo vediamo un esempio basico:

import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.Option;

public class Main {

    @Option(name = "-n", aliases = "--nome", usage = "Nome bbligatorio!", required = true)
    private String nome;

    @Option(name = "-v", aliases = "--verbose", usage = "Modalità verbosa")
    private boolean verbose;

    private void parser(String[] args) {
        try {
            final CmdLineParser parser = new CmdLineParser(this);
            if (args.length < 1) {
                parser.printUsage(System.out);
                System.exit(0);
            }
            parser.parseArgument(args);
        } catch (CmdLineException ex) {
            System.out.println(ex.getMessage());
        }
        System.out.println(nome);
        System.out.println(verbose);
    }

    public static void main(String[] args) {
        String[] myArgs = {};
//        String[] myArgs = {"-n", "Mattepuffo"};
//        String[] myArgs = {"-n", "Mattepuffo", "-v"};
        Main m = new Main();
        m.parser(myArgs);
    }
}

Per semplicità usaremo una variabile che contiene gli arogmenti sotto forma di array.

Ci sono tre esempi:

  • nel primo passiamo un array vuoto
  • nel secondo solo il nome
  • nel terzo entrambe le opzioni

Lanciatalo con tutti e tre gli esempi per vedere le differenze.

Come potete notare è abbastanza semplice da usare, e abbastanza flessibile.

Il menu di help è compreso nella libreria, e in pratica corrisponde al metodo printUsage.

Enjoy!