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
1. Adventsverlosung mit LEGO
wallpaper-1019588
The Vision of Escaflowne kehrt zurück
wallpaper-1019588
Frühlingsgruß aus Mariazell mit der Frühlingsknotenblume
wallpaper-1019588
"Welcome to New York" [USA, F 2014]
wallpaper-1019588
Counter Strike: Global Offensive - Multiplayer mit Benny
wallpaper-1019588
Kleine Garderobe aus Wasserrohren
wallpaper-1019588
Sunne im Värmland, Schweden
wallpaper-1019588
Besucherrekorde bei der Gamescom 2019 in Köln