Java Quickie: Die Kommandozeilen Argumente mit Apache Commons CLI bändigen

Seit März 2017 gibt es noch kein neues Release von den Commons CLI. Aber warum die Commandline nicht auch damit auswerten? Macht alles viel übersichtlicher.

Java Quickie: Die Kommandozeilen Argumente mit Apache Commons CLI bändigen

Das geht mit ein paar Zeilen Java Code und einen Eintrag in der pom.xml:

<dependency>
		    <groupId>commons-cli</groupId>
		    <artifactId>commons-cli</artifactId>
		    <version>1.4</version>
</dependency>

Hier ein Beispiel snippets:

/**
 * Startet die Umwandlung
 * 
 * @author Thomas Wenzlaff
 *
 */
@SuppressWarnings({ "deprecation", "static-access" })
public class Start {

	private static Options options = new Options();

	/**
	 * Start mit Übergabe des Verzeichnis.
	 * 
	 * @param args das Import Verzeichnis
	 * @throws Exception bei Fehler
	 */
	public static void main(String[] args) throws Exception {

		options.addOption("h", "hilfe", false, "zeige die Hilfe.");

		Option buildfile = OptionBuilder.withArgName("Verzeichnis").hasArg().withDescription("Pdf-Input Verzeichnis")
				.create("i");
		options.addOption(buildfile);

		CommandLineParser parser = new DefaultParser();
		CommandLine cmd = null;
		try {
			cmd = parser.parse(options, args);
		} catch (Exception e) {
			System.err.println("Fehler beim parsen der Kommandozeile. " + e.getLocalizedMessage());
			hilfe();
		}

		if (cmd.hasOption("h")) {
			hilfe();
		}

		String inputVerz = ".";

		if (cmd.hasOption("i")) {
			inputVerz = cmd.getOptionValue("i");
			System.out.println("Input:" + inputVerz);
		}

		Verzeichnis v = new Verzeichnis(inputVerz);
		if (v.getAllPdfDateiname().isEmpty()) {
			System.err.println("Keine PDF Dateien in dem " + inputVerz + " Verzeichnis vorhanden.");

			hilfe();
		}
// ...

private static void hilfe() {

		HelpFormatter formatter = new HelpFormatter();

		formatter.printHelp("de.wenzlaff.twpdfformulartocsv", options);

		System.exit(0);

	}

Also wir brauchen nur ein Options Objekt, dem wir die Option hinzufügen. Für die hilfe, eine kleine Methode. Dann ein CommandLineParser der die Argumente parst. Dann brauchen wird nur noch die Argumente auswerten bzw. setzen. Weitere Infos hier auf der Apace Seite.

Bei -h wird dann

usage: de.wenzlaff.twpdfformulartocsv
 -h,--hilfe         zeige die Hilfe.
 -i <Verzeichnis>   Pdf-Input Verzeichnis

ausgegeben.

Ähnliche Artikel:

  1. Wie kann eine Excel CSV Datei mit Java mit Apache commons eingelesen werden?
  2. Java Rätsel des Monats
  3. Java: Rätsel des Tages

wallpaper-1019588
Servus TV – Heimatleuchten über das Mariazellerland
wallpaper-1019588
04.02.2019 – Roter Blitz fährt wieder
wallpaper-1019588
Kuschlige Gefährten fürs Leben von Freia Dolls + Verlosung
wallpaper-1019588
Theater als demokratiepolitisches Versuchslabor
wallpaper-1019588
Glück im Glarner ÖV
wallpaper-1019588
XTERRA Netherlands – The Pics
wallpaper-1019588
Feigen-Frisée-Salat mit Bacon
wallpaper-1019588
Kräuteröl selber machen: Gesunde Würzmischung für Speisen