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.
Das geht mit ein paar Zeilen Java Code und einen Eintrag in der pom.xml:
1 2 3 4 5 |
<dependency> <groupId>commons-cli</groupId> <artifactId>commons-cli</artifactId> <version>1.4</version> </dependency> |
Hier ein Beispiel snippets:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
/** * 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 Apache Seite.
Bei -h wird dann
1 2 3 |
usage: de.wenzlaff.twpdfformulartocsv -h,--hilfe zeige die Hilfe. -i <Verzeichnis> Pdf-Input Verzeichnis |
ausgegeben.