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!
java jcommander maven
Commentami!