CLI-Frameworks für Kotlin: Erstellung von Konsolenanwendungen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

CLI-Frameworks für Kotlin: Erstellung leistungsstarker Konsolenanwendungen



Kotlin ist eine moderne Sprache, die nicht nur für die Android-Entwicklung, sondern auch für die Erstellung von Server- und Konsolenanwendungen aktiv genutzt wird. Die Entwicklung von CLI (Command Line Interface)-Werkzeugen in Kotlin kann durch spezialisierte Frameworks erheblich vereinfacht werden. In diesem Artikel betrachten wir drei der beliebtesten Lösungen: Clikt, Kotlinx-cli und Aigrette, und analysieren sie anhand praktischer Beispiele.



Wozu ein CLI-Framework?



Das manuelle Schreiben eines Parsers für Kommandozeilenargumente ist eine mühsame und fehleranfällige Aufgabe. Frameworks für CLI bieten:



  • Automatisches Parsen von Argumenten und Optionen
  • Generierung von Hilfetexten (--help)
  • Validierung von Eingabedaten
  • Unterstützung von Unterbefehlen (subcommands)
  • Fehlerbehandlung mit verständlichen Meldungen


Clikt – die beliebteste Wahl



Clikt ist eine leistungsstarke und flexible Bibliothek, die sich zum De-facto-Standard für CLI in Kotlin entwickelt hat. Sie verwendet einen deklarativen Ansatz mit Annotationen und bietet eine umfangreiche API.



Installation (über Gradle):



implementation("com.github.ajalt.clikt:clikt:4.2.1")


Beispiel einer einfachen Anwendung:



import com.github.ajalt.clikt.core.CliktCommandimport com.github.ajalt.clikt.parameters.arguments.argumentimport com.github.ajalt.clikt.parameters.options.optionimport com.github.ajalt.clikt.parameters.types.int

class Greet : CliktCommand() { val name by argument() val count by option("--count", "-c", help = "Anzahl der Wiederholungen").int().default(1)

override fun run() { repeat(count) { echo("Hallo, $name!") } }}

fun main(args: Array<String>) = Greet().main(args)


Ausführung:



./app --count 3 Ivan# Ausgabe:# Hallo, Ivan!# Hallo, Ivan!# Hallo, Ivan!


Clikt unterstützt verschachtelte Befehle, automatische Vervollständigung, Farben in der Konsole und strenge Typisierung. Für komplexe Projekte (z. B. DevOps-Werkzeuge, Dienstprogramme für die Arbeit mit APIs) ist dies die beste Wahl.



Kotlinx-cli – eine leichte Lösung von JetBrains



Kotlinx-cli ist die offizielle Bibliothek der Kotlin-Entwickler. Sie ist weniger funktionsreich als Clikt, aber ideal für einfache Dienstprogramme und kleine Projekte.



Installation:



implementation("org.jetbrains.kotlinx:kotlinx-cli:0.3.6")


Beispiel:



import kotlinx.cli.*

fun main(args: Array<String>) { val parser = ArgParser("file-util") val input by parser.argument(ArgType.String, description = "Eingabedatei") val output by parser.option(ArgType.String, shortName = "o", description = "Ausgabedatei").default("out.txt") val verbose by parser.option(ArgType.Boolean, shortName = "v", description = "Ausführliche Ausgabe").default(false)

parser.parse(args)

println("Lesen von: $input") println("Schreiben nach: $output") if (verbose) println("Ausführlicher Modus aktiviert")}


Kotlinx-cli benötigt keine zusätzlichen Abhängigkeiten und eignet sich hervorragend für schnelles Prototyping. Es unterstützt jedoch keine verschachtelten Befehle und keine komplexe Validierung.



Aigrette – funktionaler Ansatz



Aigrette ist eine weniger bekannte, aber interessante Bibliothek, die einen funktionalen Stil verwendet. Sie basiert auf dem Konzept der "Parser-Kombinatoren".



Installation:



implementation("io.github.petertrr:aigrette:0.3.0")


Beispiel:



import io.github.petertrr.aigrette.*

data class Config(val name: String, val age: Int, val flag: Boo

Empfehlungen