Picocli: Eine leistungsstarke Bibliothek für die Erstellung von Befehlszeilenanwendungen. Hier habe ich schon oft davon berichtet. Da es im Juni die Version 4.7.4 gab, mal hier ein Beispiel dazu.
Die Entwicklung von Software, sei es in Form von Anwendungen oder Tools, erfordert oft die Integration von Befehlszeilenfunktionalität, um Benutzern eine effiziente Interaktion mit der Software zu ermöglichen. Eine der bemerkenswertesten Bibliotheken, die diese Aufgabe erleichtert, ist „Picocli„. Picocli ist eine Java-basierte Open-Source-Bibliothek, die Entwicklern dabei hilft, robuste und benutzerfreundliche Befehlszeilenanwendungen zu erstellen.
Was ist Picocli? Picocli ist eine leistungsstarke Befehlszeilen-Parser-Bibliothek für Java-Anwendungen. Sie ermöglicht es Entwicklern, schnell und einfach Befehlszeilenanwendungen zu erstellen, die komplexe Optionen, Argumente und Unterbefehle unterstützen. Die Bibliothek zeichnet sich durch ihre Benutzerfreundlichkeit, Flexibilität und Erweiterbarkeit aus.
Hier mal ein Beispiel:
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 63 |
package de.wenzlaff.twgraph; import java.util.concurrent.Callable; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import picocli.CommandLine; import picocli.CommandLine.Command; import picocli.CommandLine.Option; /** * Komandozeile für das TWGraph Programm. * * <pre> Usage: TWGraph [-ah] -o=<dateiName> -p=<projektDir> Programm zur Erzeugung von Graphen. -a, --[no-]applet Schaltet das Applet aus -a=false -h, --help Zeigt die Hilfe an und beendet das Programm -o, --outputfilename=<dateiName> Der Output Dateiname für die Abhängigkeiten -p, --projektverzeichnis=<projektDir> Der Pfad zum Projektverzeichnis Thomas Wenzlaff http://www.wenzlaff.info Copyright (c) 2023 Thomas Wenzlaff * </pre> * * @author Thomas Wenzlaff */ @Command(name = "TWGraph", mixinStandardHelpOptions = true, version = "TWGraph 1.0.0", description = "Programm zur Erzeugung von Graphen.", showDefaultValues = true, footer = { "@|fg(green) Thomas Wenzlaff|@", "@|fg(red),bold http://www.wenzlaff.info|@", "@|fg(red),bold Copyright (c) 2023 Thomas Wenzlaff|@" }) public class TWGraphCmd implements Callable<Integer> { private static final Logger LOG = LogManager.getLogger(TWGraphCmd.class); @Option(names = { "-p", "--projektverzeichnis" }, description = "Der Pfad zum Projektverzeichnis", required = true) private String projektDir; @Option(names = { "-o", "--outputfilename" }, description = "Der Output Dateiname für die Abhängigkeiten", required = true) private String dateiName; @Option(names = { "-a", "--applet" }, description = "Schaltet das Applet aus -a=false", negatable = true, defaultValue = "true", fallbackValue = "true") private boolean isApplet; @Option(names = { "-h", "--help" }, usageHelp = true, description = "Zeigt die Hilfe an und beendet das Programm") boolean help; public static void main(String[] args) { CommandLine cmd = new CommandLine(new TWGraphCmd()); cmd.execute(args); } @Override public Integer call() throws Exception { LOG.info("TWGraph ... Starte mit Projektverzeichnis {} und Outputdatei: {} Applet Start: {}", projektDir, dateiName, isApplet); String[] args = { projektDir, dateiName, String.valueOf(isApplet) }; TWGraph.main(args); return 0; } } |
Hauptmerkmale von Picocli:
Deklarative Syntax: Picocli verwendet eine deklarative Syntax, um Befehlszeilenoptionen und -argumente zu definieren. Dies erleichtert die Erstellung und Wartung von Befehlszeilenanwendungen, da die Konfiguration direkt im Quellcode erfolgt.
Automatische Generierung von Hilfe: Picocli generiert automatisch detaillierte Hilfeinformationen für Ihre Befehlszeilenanwendung, einschließlich einer Übersicht über Optionen, Argumente und Unterbefehle. Dies erleichtert es den Benutzern, die Anwendung zu verstehen und korrekt zu verwenden. Siehe oben.
Unterstützung für Subkommandos: Komplexe Befehlszeilenanwendungen erfordern oft hierarchische Strukturen. Picocli ermöglicht die Definition von Unterbefehlen, die jeweils ihre eigenen Optionen und Argumente haben können.
Validierung und Konvertierung: Picocli bietet integrierte Unterstützung für die Validierung und Konvertierung von Befehlszeilenargumenten in Java-Typen. Dies erleichtert die Verarbeitung von Eingaben und minimiert Fehler.
Anpassbare Ausgabe: Entwickler können das Ausgabeformat der Hilfe und Fehlermeldungen anpassen, um sicherzustellen, dass die Benutzeroberfläche konsistent und benutzerfreundlich ist.
Annotationen-basiert: Picocli ermöglicht die Verwendung von Annotationen, um Befehlszeilenoptionen, Argumente und Unterbefehle zu definieren. Dies fördert die Lesbarkeit und erleichtert die Integration in bestehenden Code.
Wie verwende ich Picocli? In die pom.xml ergänzen:
1 2 3 4 5 |
<dependency> <groupId>info.picocli</groupId> <artifactId>picocli</artifactId> <version>4.7.4</version> </dependency> |
Picocli ist eine bemerkenswerte Bibliothek, die die Erstellung von Befehlszeilenanwendungen in Java erheblich vereinfacht. Mit ihren leistungsstarken Funktionen, der deklarativen Syntax und der Unterstützung für Subkommandos ermöglicht sie es Entwicklern, robuste und benutzerfreundliche Tools zu erstellen. Ob für die Entwicklung von Tools, die Systemadministration, Datenverarbeitung oder andere Aufgaben erleichtern, Picocli ist eine wertvolle Ergänzung im Werkzeugkasten eines Java-Entwicklers. Also jede main Methode sollte picocli nutzen, um nicht zu sagen…
1 2 3 4 5 6 7 8 9 10 11 |
In der Welt des Codes, so stark und smart, Ein Tool tritt hervor, spielt eine große Part. Picocli sein Name, Java sei sein Herz, Mit Befehlszeilenkraft, es gibt keinen Schmerz. Für Befehlszeilenhelden, für Entwickler wie dich, Picocli ist die Wahl, nie mehr ein Kompromiss. Mit Eleganz und Stärke, es begleitet dich weit, Das Java Commandline Tool, für jede Zeit. -Thomas Wenzlaff |