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
#1513 [Review] Manga ~ P × P
wallpaper-1019588
Sind die Flughafen-Lounges den Hype wert?
wallpaper-1019588
A Nobody’s Way Up to an Exploration Hero: Anime erscheint als Doppelfolge
wallpaper-1019588
[Manga] Nana & Kaoru [Max 9]