{"id":12952,"date":"2019-05-04T07:00:49","date_gmt":"2019-05-04T05:00:49","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=12952"},"modified":"2022-03-16T18:48:06","modified_gmt":"2022-03-16T17:48:06","slug":"java-quickie-die-kommandozeilen-argumente-mit-apache-commons-cli-baendigen","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=12952","title":{"rendered":"Java Quickie: Die Kommandozeilen Argumente mit Apache Commons CLI b\u00e4ndigen"},"content":{"rendered":"<p>Seit M\u00e4rz 2017 gibt es noch kein neues Release von den <a href=\"https:\/\/commons.apache.org\/proper\/commons-cli\/index.html\" rel=\"noopener noreferrer\" target=\"_blank\">Commons CLI<\/a>. Aber warum die Commandline nicht auch damit auswerten? Macht alles viel \u00fcbersichtlicher.<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2019\/03\/Maven-Command-Line-Options-700x554.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2019\/03\/Maven-Command-Line-Options-700x554.png\" alt=\"\" width=\"700\" height=\"554\" class=\"aligncenter size-full wp-image-12953\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2019\/03\/Maven-Command-Line-Options-700x554.png 700w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2019\/03\/Maven-Command-Line-Options-700x554-300x237.png 300w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/a><\/p>\n<p>Das geht mit ein paar Zeilen Java Code und einen Eintrag in der pom.xml:<\/p>\n<pre class=\"lang:xhtml decode:true \" >\r\n&lt;dependency&gt;\r\n\t\t    &lt;groupId&gt;commons-cli&lt;\/groupId&gt;\r\n\t\t    &lt;artifactId&gt;commons-cli&lt;\/artifactId&gt;\r\n\t\t    &lt;version&gt;1.4&lt;\/version&gt;\r\n&lt;\/dependency&gt;\t<\/pre>\n<p>Hier ein Beispiel snippets:<!--more--><\/p>\n<pre class=\"lang:java decode:true \" >\r\n\/**\r\n * Startet die Umwandlung\r\n * \r\n * @author Thomas Wenzlaff\r\n *\r\n *\/\r\n@SuppressWarnings({ \"deprecation\", \"static-access\" })\r\npublic class Start {\r\n\r\n\tprivate static Options options = new Options();\r\n\r\n\t\/**\r\n\t * Start mit \u00dcbergabe des Verzeichnis.\r\n\t * \r\n\t * @param args das Import Verzeichnis\r\n\t * @throws Exception bei Fehler\r\n\t *\/\r\n\tpublic static void main(String[] args) throws Exception {\r\n\r\n\t\toptions.addOption(\"h\", \"hilfe\", false, \"zeige die Hilfe.\");\r\n\r\n\t\tOption buildfile = OptionBuilder.withArgName(\"Verzeichnis\").hasArg().withDescription(\"Pdf-Input Verzeichnis\")\r\n\t\t\t\t.create(\"i\");\r\n\t\toptions.addOption(buildfile);\r\n\r\n\t\tCommandLineParser parser = new DefaultParser();\r\n\t\tCommandLine cmd = null;\r\n\t\ttry {\r\n\t\t\tcmd = parser.parse(options, args);\r\n\t\t} catch (Exception e) {\r\n\t\t\tSystem.err.println(\"Fehler beim parsen der Kommandozeile. \" + e.getLocalizedMessage());\r\n\t\t\thilfe();\r\n\t\t}\r\n\r\n\t\tif (cmd.hasOption(\"h\")) {\r\n\t\t\thilfe();\r\n\t\t}\r\n\r\n\t\tString inputVerz = \".\";\r\n\r\n\t\tif (cmd.hasOption(\"i\")) {\r\n\t\t\tinputVerz = cmd.getOptionValue(\"i\");\r\n\t\t\tSystem.out.println(\"Input:\" + inputVerz);\r\n\t\t}\r\n\r\n\t\tVerzeichnis v = new Verzeichnis(inputVerz);\r\n\t\tif (v.getAllPdfDateiname().isEmpty()) {\r\n\t\t\tSystem.err.println(\"Keine PDF Dateien in dem \" + inputVerz + \" Verzeichnis vorhanden.\");\r\n\r\n\t\t\thilfe();\r\n\t\t}\r\n\/\/ ...\r\n\r\nprivate static void hilfe() {\r\n\r\n\t\tHelpFormatter formatter = new HelpFormatter();\r\n\r\n\t\tformatter.printHelp(\"de.wenzlaff.twpdfformulartocsv\", options);\r\n\r\n\t\tSystem.exit(0);\r\n\r\n\t}\r\n<\/pre>\n<p>Also wir brauchen nur ein <strong>Options<\/strong> Objekt, dem wir die <strong>Option<\/strong> hinzuf\u00fcgen. F\u00fcr die hilfe, eine kleine Methode. Dann ein CommandLineParser der die Argumente parst. Dann brauchen wird nur noch die Argumente auswerten bzw. setzen. Weitere Infos <a href=\"https:\/\/commons.apache.org\/proper\/commons-cli\/index.html\" rel=\"noopener noreferrer\" target=\"_blank\">hier auf der Apache Seite<\/a>.<\/p>\n<p>Bei <strong>-h<\/strong> wird dann<\/p>\n<pre class=\"lang:default decode:true \" >usage: de.wenzlaff.twpdfformulartocsv\r\n -h,--hilfe         zeige die Hilfe.\r\n -i &lt;Verzeichnis&gt;   Pdf-Input Verzeichnis<\/pre>\n<p>ausgegeben.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Seit M\u00e4rz 2017 gibt es noch kein neues Release von den Commons CLI. Aber warum die Commandline nicht auch damit auswerten? Macht alles viel \u00fcbersichtlicher. Das geht mit ein paar Zeilen Java Code und einen Eintrag in der pom.xml: &lt;dependency&gt; &lt;groupId&gt;commons-cli&lt;\/groupId&gt; &lt;artifactId&gt;commons-cli&lt;\/artifactId&gt; &lt;version&gt;1.4&lt;\/version&gt; &lt;\/dependency&gt; Hier ein Beispiel snippets:<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,5,3163,79,7],"tags":[3588,3589,3590,3591],"class_list":["post-12952","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-java","category-maven","category-programmierung","category-tools","tag-apache-commons-cli","tag-cli","tag-commandline","tag-commons"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/12952","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=12952"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/12952\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=12952"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=12952"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=12952"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}