Eseguire il parsing degli aromenti in Java con JCommander

Mattepuffo's logo
Eseguire il parsing degli aromenti in Java con JCommander

Eseguire il parsing degli aromenti in Java con JCommander

Per eseguire il parsing della riga di comando in Java abbiamo diverse librerie.

Oggi vediamo JCommander!

Volendo è possibile usarlo anche con Groovy e Kotlin.

Inoltre ha tantissime opzioni e metodi utili.

Noi vedremo un esempio basico per partire.

Se usate Maven, aggiungete questa dipendenza:

<dependency>
   <groupId>com.beust</groupId>
   <artifactId>jcommander</artifactId>
   <version>1.72</version>
</dependency>

A questo punto creiamo una classe che si occupa di registrare le opzioni richieste:

import com.beust.jcommander.Parameter;

public class MainArgs {

    @Parameter(names = {"--nome", "-n"}, description = "Nome utente", required = true)
    String nome;

    @Parameter(names = {"--eta", "-e"}, description = "Età utente", required = true)
    Integer eta;
}

Abbiamo impostato due parametri, entrambi richiesti, uno di tipo stringa e un intero.

Per lanciare il programma possiamo fare così:

import com.beust.jcommander.JCommander;
import com.beust.jcommander.ParameterException;

public class Main {

    public static void main(String[] args) {
        try {
            String[] argv = {"-n", "matteo",};
            MainArgs ma = new MainArgs();
            JCommander.newBuilder().addObject(ma).build().parse(argv);
            System.out.printf("%s %d", ma.nome, ma.eta);
        } catch (ParameterException ex) {
            System.out.printf("Parametro richiesto mancante!");
        }
    }
}

Per comodità ho messo i parametri "fissi"; in questo caso verrà lanciata una eccezione in quanto manca il secondo parametro.

In caso contrario verranno stampati entrambi i valori.

Guardate alla documentazione per altri esempi!

Enjoy!


Condividi

Commentami!