Kotlin CLI-Dienstprogramme: Von der Konsole aus schreiben

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

Warum Kotlin die ideale Sprache für CLI-Dienstprogramme ist?

\n\n

Wenn es um die Erstellung von Konsolenwerkzeugen geht, greifen viele Entwickler aus Gewohnheit zu Python oder Bash. Aber wenn Sie bereits mit Kotlin vertraut sind (und auf unserer Website pythonlib.ru sind wir überzeugt, dass ein guter Entwickler mehrere Sprachen beherrscht), dann wissen Sie, wie prägnant und ausdrucksstark diese Sprache ist. Die Erstellung von CLI-Dienstprogrammen in Kotlin ist nicht nur eine Modeerscheinung, sondern eine echte Möglichkeit, schnelle, typsichere und plattformübergreifende Werkzeuge zu erhalten.

\n\n

Stellen Sie sich vor: Sie schreiben eine Konsolenanwendung in Kotlin, die in ein JAR oder ein natives Binary über GraalVM oder Kotlin/Native kompiliert wird. Sie läuft überall – vom Linux-Server bis zum Windows-Rechner eines Kollegen. Dabei ist der Code 2-3 mal kürzer als in Java und viel sicherer als in Python. Klingt verlockend? Lassen Sie uns loslegen.

\n\n

Was wird für den Start benötigt?

\n\n

Für die Erstellung einer Kotlin CLI benötigen Sie ein Minimum:

\n
    \n
  • Installiertes JDK 11+ (ich empfehle 17 oder 21)
  • \n
  • IntelliJ IDEA (Community-Version reicht aus) oder einen beliebigen Texteditor
  • \n
  • Grundkenntnisse in Kotlin (Funktionen, Klassen, Collections)
  • \n
  • Gradle oder Maven für den Build
  • \n
\n\n

Wenn Sie noch nicht mit Kotlin in der Konsole gearbeitet haben – kein Problem. Wir gehen den Weg von einer leeren Datei bis zu einem vollwertigen Dienstprogramm, das veröffentlicht und in CI/CD-Pipelines verwendet werden kann.

\n\n

Schritt 1: Projekteinrichtung für das CLI-Dienstprogramm

\n\n

Erstellen wir ein einfaches Gradle-Projekt. Hier ist das minimale build.gradle.kts:

\n\n
plugins {\n    kotlin("jvm") version "1.9.22"\n    application\n}\n\napplication {\n    mainClass.set("com.pythonlib.cli.MainKt")\n}\n\nrepositories {\n    mavenCentral()\n}\n\ndependencies {\n    implementation("com.github.ajalt.clikt:clikt:4.2.2")\n    implementation("org.jetbrains.kotlinx:kotlinx-cli:0.3.6")\n}
\n\n

Beachten Sie die beiden wichtigen Bibliotheken: Clikt und Kotlinx CLI. Die erste ist die beliebteste Bibliothek zur Erstellung von CLI-Dienstprogrammen in Kotlin. Die zweite ist die offizielle Lösung von JetBrains. In diesem Artikel werden wir Clikt verwenden, da es mehr Flexibilität bietet und schöner aussieht.

\n\n

Schritt 2: Den ersten Befehl schreiben

\n\n

Erstellen wir die Datei src/main/kotlin/com/pythonlib/cli/Main.kt:

\n\n
package com.pythonlib.cli\n\nimport com.github.ajalt.clikt.core.CliktCommand\nimport com.github.ajalt.clikt.parameters.arguments.argument\nimport com.github.ajalt.clikt.parameters.options.option\nimport com.github.ajalt.clikt.parameters.options.flag\n\nclass GreetCommand : CliktCommand(\n    name = "greet",\n    help = "Begrüßt den Benutzer"\n) {\n    private val name: String by argument(\n        help = "Benutzername"\n    )\n\n    private val uppercase: Boolean by option(\n        "--uppercase", "-u",\n        help = "Namen in Großbuchstaben ausgeben"\n    ).flag()\n\n    override fun run() {\n        val greeting = "Hallo, $name!"\n        if (uppercase) {\n            echo(greeting.uppercase())\n        } else {\n            echo(greeting)\n        }\n    }\n}\n\nfun main(args: Array<String>) {\n    GreetCommand().main(args)\n}
\n\n

Dies ist ein einfaches Kotlin CLI-Dienstprogramm, das einen Namen und ein optionales Flag akzeptiert. Starten wir es:

\n\n
./gradlew run --args="Alexei --uppercase"\n# Ausgabe: HALLO, ALEXEI!
\n\n

Nur 30 Zeilen Code – und wir haben ein funktionierendes Konsolenwerkzeug. Clikt generiert selbstständig die Hilfe, verarbeitet Fehler und unterstützt die Autovervollständigung für bash/zsh.

\n\n

Schritt 3: Mehrstufige Befehle (wie in Git)

\n\n

Echte Konsolenanwendungen in Kotlin bestehen selten aus nur einem Befehl. Lassen Sie uns ein Dienstprogramm für die Dateiarbeit erstellen, das Unterbefehle unterstützt:

\n\n
import com.github.ajalt.clikt.core.subcommands\n\nclass FileTool : CliktCommand(\n    name                

Blogs

Buchempfehlungen