Wer mit Java programmiert musste sicher schon einmal für eine Java Applikation die Kommandozeilenparameter auslesen. Wenn man nun nicht das Rad immer wieder neu erfinden will, sollte man zu erst einen Blick auf die Apache commons Bibliothek werfen.
Tut man das, so wird man dort auch für das Kommandozeilenproblem fündig. Die Lösung heißt – Apache commons – CLI. Die Bibliothek hilft nicht nur beim Auslesen der Kommandozeilenparameter, sondern bietet auch gleich die Möglichkeit eine Hilfe für die Verwendung der Parameter zu generieren.
Ein kleines Beispiel, sagt mehr als 1000 Worte
1.) Installation
- downloaden und auspacken
- commons-cli-1.0.jar in den CLASS_PATH aufnehmen
2.) Definition der Optionen
Options options = new Options();
Option help = new Option( "help", "print this message" );
Option optDescription = OptionBuilder.withArgName( "string" )
.hasArg()
.withDescription( "use given description for incident" )
.create( "description" );
Option optLongDescription = OptionBuilder.withArgName( "string" )
.hasArg()
.withDescription( "use given description for incident" )
.create( "longDescription" );
options.addOption(help);
options.addOption(optDescription);
options.addOption(optLongDescription);
3.) Parsen der Kommandozeilenargumente
CommandLineParser parser = new GnuParser();
CommandLine line = parser.parse( options, args );
4.) Auslesen von Optionen ohne Argumente
if(line.hasOption("h")) {
// Ausgabe der Hilfe
}
5.) Auslesen von Optionen mit Argumenten
String description="";
String longDescription="";
if( line.hasOption( "description" ) ) {
description = line.getOptionValue( "description" );
log.debug("Description: "+description);
}
if( line.hasOption( "longDescription" ) ) {
longDescription = line.getOptionValue( "longDescription" );
log.debug("Long Description: "+longDescription);
}
6.) Ausgabe für die Hilfe generieren
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp( "ant", options );
7.) fertig -> einfach schön oder schön einfach 🙂
Das hab ich gesucht….
Nach C++, Perl, PHP ist Java gar nicht so schwer zu lernen, scheint es 🙂