GradleビルドへのKSPプロセッサーの統合
GradleでKSPを設定し、生成ソースを追加して、プロセッサーの出力をデバッグします。
「GradleビルドへのKSPプロセッサーの統合」はCoddyKit上の無料Kotlin Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKotlin Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kotlin Academyコースには全4レッスンが含まれています。
マルチモジュール構成
一般的なKSPセットアップには、少なくとも2つのモジュールがあります。:annotation(アノテーションクラスを含む)と、SymbolProcessorを含む :processor です。利用側のモジュールではKSPプラグインを適用し、ksp と implementation の依存関係を宣言します。
KSPプラグインの適用
利用側モジュールの build.gradle.kts で次のように設定します。
plugins {
kotlin("jvm") // or android, multiplatform
id("com.google.devtools.ksp") version "2.0.0-1.0.21"
}ksp依存関係の宣言
KSPプロセッサを追加するには、implementation ではなく ksp 構成を使用します。プロセッサはビルド時にのみ実行され、最終成果物には含まれません。
dependencies {
implementation(project(":annotation"))
ksp(project(":processor"))
}生成ソースディレクトリ
KSPは生成ファイルを build/generated/ksp/<sourceSet>/kotlin/ 以下に書き込みます。KSPプラグインはこれらのディレクトリをKotlinのソースセットに自動的に追加するため、手動で設定しなくても生成されたクラスをコードから参照できます。
プロセッサへのオプションの渡し方
ksp { arg("key", "value") } を使用すると、ビルド時のオプションをGradleからプロセッサに渡せます。プロセッサでは environment.options["key"] を使用して読み取ります。
// build.gradle.kts (consumer)
ksp {
arg("generateMocks", "true")
arg("outputPackage", "com.example.generated")
}プロセッサでのオプションの読み取り
SymbolProcessorProvider.create() メソッドでは、環境からオプションにアクセスします。
class MyProcessorProvider : SymbolProcessorProvider {
override fun create(environment: SymbolProcessorEnvironment): SymbolProcessor {
val genMocks = environment.options["generateMocks"] == "true"
return MyProcessor(environment.codeGenerator, environment.logger, genMocks)
}
}インクリメンタルビルド
KSPは入力と出力の依存関係を追跡します。codeGenerator.createNewFile() を呼び出す際に、生成する各ファイルを元のシンボルに関連付けてください。これにより、追跡対象の入力に変更がなければ、KSPは再処理をスキップします。
val deps = Dependencies(aggregating = false, *symbols.map { it.containingFile!! }.toTypedArray())
codeGenerator.createNewFile(deps, packageName, fileName)AndroidでのKSP
Androidプロジェクトでは、プラグインと依存関係の宣言の両方で kapt を ksp に置き換えます。ビルドタイプごとにプロセッサの動作を変える必要がある場合は、kspDebug や kspRelease など、バリアント対応の構成を使用します。
Kotlin MultiplatformでのKSP
KMPプロジェクトでは、KSPプラグインを適用し、プロセッサが対応するターゲットに応じて、add(kotlinCompilation.defaultSourceSetName + "ksp", project(":processor")) または簡略記法の kspCommonMainMetadata、kspJvmMain などを使用します。
生成ファイルの表示
./gradlew build(Androidの場合は kspKotlin または kspDebugKotlin)を実行した後、build/generated/ksp/ を確認します。IntelliJとAndroid Studioはこれらのフォルダーを生成ソースとしてマークし、使用箇所から生成された宣言へ移動できるようにします。
プロセッサのデバッグ
Gradleタスクを --debug 付きで実行するか、ksp 構成に jvmArgs("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005") を追加して、アノテーション処理用JVMにリモートデバッガーを接続します。
確認問題
ビルド時に実行されるものの、実行時のクラスパスには含まれないKSPプロセッサを追加するには、どのGradle構成を使用しますか。
振り返り:KSPのGradleビルドへの統合
要点:
com.google.devtools.kspプラグインを適用し、ksp()依存関係でプロセッサを追加します- 生成ソースは
build/generated/ksp/に配置され、ソースセットに自動的に追加されます - Gradleから
ksp { arg() }でオプションを渡し、environment.optionsで読み取ります - 正確なインクリメンタル再ビルドのため、
createNewFile()とDependenciesを使用します - Android(バリアント構成)とKotlin Multiplatformに対応しています
よくある質問
「GradleビルドへのKSPプロセッサーの統合」レッスンは無料ですか?
はい。「GradleビルドへのKSPプロセッサーの統合」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kotlin Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kotlin Academyコースには全4レッスンが含まれています。
「GradleビルドへのKSPプロセッサーの統合」で何を学びますか?
GradleでKSPを設定し、生成ソースを追加して、プロセッサーの出力をデバッグします。 ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Kotlin Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのKotlin Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「GradleビルドへのKSPプロセッサーの統合」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このKotlin Academyレッスンでコードを書いて実行できますか?
はい。すべてのKotlin Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- KSPとKAPT:KSPが高速な理由
- 最初のSymbolProcessorを作成する
- KotlinPoetによるKotlinソースファイルの生成
- GradleビルドへのKSPプロセッサーの統合