KSP-Prozessoren in einen Gradle-Build integrieren
Konfigurieren Sie KSP in Gradle, fügen Sie generierte Quellen hinzu und untersuchen Sie die Prozessor-Ausgabe.
KSP-Prozessoren in einen Gradle-Build integrieren ist eine kostenlose Kotlin Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Kotlin Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.
Multi-Modul-Struktur
Eine typische KSP-Konfiguration umfasst mindestens zwei Module: :annotation (enthält Ihre Annotationsklassen) und :processor (enthält den SymbolProcessor). Das konsumierende Modul wendet das KSP-Plugin an und deklariert ksp- und implementation-Abhängigkeiten.
KSP-Plugin anwenden
Im build.gradle.kts des konsumierenden Moduls:
plugins {
kotlin("jvm") // or android, multiplatform
id("com.google.devtools.ksp") version "2.0.0-1.0.21"
}Die ksp-Abhängigkeit deklarieren
Verwenden Sie die Konfiguration ksp (nicht implementation), um einen KSP-Prozessor hinzuzufügen. Der Prozessor wird nur zur Build-Zeit ausgeführt und nicht in das endgültige Artefakt aufgenommen:
dependencies {
implementation(project(":annotation"))
ksp(project(":processor"))
}Verzeichnisse für generierte Quellen
KSP schreibt generierte Dateien unter build/generated/ksp/<sourceSet>/kotlin/. Das KSP-Plugin fügt diese Verzeichnisse automatisch zum Kotlin-Source-Set hinzu, sodass generierte Klassen ohne manuelle Konfiguration in Ihrem Code sichtbar sind.
Optionen an den Prozessor übergeben
Übergeben Sie Build-Optionen von Gradle an Ihren Prozessor mit ksp { arg("key", "value") }. Lesen Sie sie im Prozessor über environment.options["key"] aus:
// build.gradle.kts (consumer)
ksp {
arg("generateMocks", "true")
arg("outputPackage", "com.example.generated")
}Optionen im Prozessor auslesen
Greifen Sie in der Methode SymbolProcessorProvider.create() über die Umgebung auf die Optionen zu:
class MyProcessorProvider : SymbolProcessorProvider {
override fun create(environment: SymbolProcessorEnvironment): SymbolProcessor {
val genMocks = environment.options["generateMocks"] == "true"
return MyProcessor(environment.codeGenerator, environment.logger, genMocks)
}
}Inkrementelle Builds
KSP verfolgt Abhängigkeiten zwischen Eingaben und Ausgaben. Verknüpfen Sie jede generierte Datei mit ihren Quellsymbolen, wenn Sie codeGenerator.createNewFile() aufrufen. KSP überspringt die erneute Verarbeitung dann, wenn sich keine der verfolgten Eingaben geändert hat.
val deps = Dependencies(aggregating = false, *symbols.map { it.containingFile!! }.toTypedArray())
codeGenerator.createNewFile(deps, packageName, fileName)KSP mit Android
Ersetzen Sie in Android-Projekten kapt sowohl in den Plugin- als auch in den Abhängigkeitsdeklarationen durch ksp. Verwenden Sie variantenabhängige Konfigurationen wie kspDebug oder kspRelease, wenn sich das Verhalten des Prozessors zwischen den Build-Typen unterscheiden soll.
KSP mit Kotlin Multiplatform
Wenden Sie in einem KMP-Projekt das KSP-Plugin an und verwenden Sie add(kotlinCompilation.defaultSourceSetName + "ksp", project(":processor")) oder die Kurzformen kspCommonMainMetadata, kspJvmMain usw. – abhängig davon, welche Targets Ihr Prozessor unterstützt.
Generierte Dateien anzeigen
Untersuchen Sie nach der Ausführung von ./gradlew build (oder kspKotlin / kspDebugKotlin für Android) das Verzeichnis build/generated/ksp/. IntelliJ und Android Studio markieren diese Ordner als generierte Quellen und ermöglichen die Navigation von Verwendungen zu generierten Deklarationen.
Einen Prozessor debuggen
Führen Sie die Gradle-Task mit --debug aus oder fügen Sie jvmArgs("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005") zur ksp-Konfiguration hinzu, um einen Remote-Debugger mit der JVM für die Annotationsverarbeitung zu verbinden.
Schnelltest
Welche Gradle-Konfiguration wird verwendet, um einen KSP-Prozessor hinzuzufügen, der zur Build-Zeit ausgeführt, aber nicht in den Runtime-Classpath aufgenommen wird?
Rückblick: KSP in einen Gradle-Build integrieren
Die wichtigsten Erkenntnisse:
- Wenden Sie das Plugin
com.google.devtools.kspan und fügen Sie den Prozessor mit der Abhängigkeitksp()hinzu - Generierte Quellen werden unter
build/generated/ksp/abgelegt und automatisch zum Source-Set hinzugefügt - Übergeben Sie Optionen von Gradle mit
ksp { arg() }und lesen Sie sie überenvironment.optionsaus - Verwenden Sie
DependenciesmitcreateNewFile()für korrekte inkrementelle Neubuilds - Funktioniert mit Android (Variantenkonfigurationen) und Kotlin Multiplatform
Häufig gestellte Fragen
Ist die Lektion „KSP-Prozessoren in einen Gradle-Build integrieren“ kostenlos?
Ja — der vollständige Text von „KSP-Prozessoren in einen Gradle-Build integrieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Kotlin Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „KSP-Prozessoren in einen Gradle-Build integrieren“?
Konfigurieren Sie KSP in Gradle, fügen Sie generierte Quellen hinzu und untersuchen Sie die Prozessor-Ausgabe. Du übst Kotlin Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Kotlin Academy zu starten?
Keine Vorkenntnisse erforderlich. Kotlin Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „KSP-Prozessoren in einen Gradle-Build integrieren“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Kotlin Academy-Lektion Code schreiben und ausführen?
Ja. Jede Kotlin Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- KSP vs. KAPT: Warum KSP schneller ist
- Ihren ersten SymbolProcessor schreiben
- Kotlin-Quelldateien mit KotlinPoet generieren
- KSP-Prozessoren in einen Gradle-Build integrieren