Skip to content

コマンドラインから KSP を実行する

KSP は Kotlin コンパイラプラグインであり、Kotlin コンパイラと共に実行する必要があります。これらをダウンロードして展開してください。

bash
#!/bin/bash

# Kotlin コンパイラ
wget https://github.com/JetBrains/kotlin/releases/download/v%kspSupportedKotlinVersion%/kotlin-compiler-%kspSupportedKotlinVersion%.zip
unzip kotlin-compiler-%kspSupportedKotlinVersion%.zip

# KSP
wget https://github.com/google/ksp/releases/download/%kspSupportedKotlinVersion%-2.3.10/artifacts.zip
unzip artifacts.zip

kotlinc で KSP を実行するには、-Xplugin オプションを kotlinc に渡します。

-Xplugin=/path/to/symbol-processing-cmdline-%kspSupportedKotlinVersion%-2.3.10.jar

これは、Gradle で実行する際に kotlin-compiler-embeddable と共に使用するように設計されている symbol-processing-%kspSupportedKotlinVersion%-2.3.10.jar とは異なります。 コマンドラインの kotlinc には symbol-processing-cmdline-%kspSupportedKotlinVersion%-2.3.10.jar が必要です。

また、API の jar も必要になります。

-Xplugin=/path/to/symbol-processing-api-%kspSupportedKotlinVersion%-2.3.10.jar

完全な例を以下に示します:

bash
#!/bin/bash

KSP_PLUGIN_ID=com.google.devtools.ksp.symbol-processing
KSP_PLUGIN_OPT=plugin:$KSP_PLUGIN_ID

KSP_PLUGIN_JAR=./com/google/devtools/ksp/symbol-processing-cmdline/%kspSupportedKotlinVersion%-2.3.10/symbol-processing-cmdline-%kspSupportedKotlinVersion%-2.3.10.jar
KSP_API_JAR=./com/google/devtools/ksp/symbol-processing-api/%kspSupportedKotlinVersion%-2.3.10/symbol-processing-api-%kspSupportedKotlinVersion%-2.3.10.jar
KOTLINC=./kotlinc/bin/kotlinc

AP=/path/to/your-processor.jar

mkdir out
$KOTLINC \
        -Xplugin=$KSP_PLUGIN_JAR \
        -Xplugin=$KSP_API_JAR \
        -Xallow-no-source-files \
        -P $KSP_PLUGIN_OPT:apclasspath=$AP \
        -P $KSP_PLUGIN_OPT:projectBaseDir=. \
        -P $KSP_PLUGIN_OPT:classOutputDir=./out \
        -P $KSP_PLUGIN_OPT:javaOutputDir=./out \
        -P $KSP_PLUGIN_OPT:kotlinOutputDir=./out \
        -P $KSP_PLUGIN_OPT:resourceOutputDir=./out \
        -P $KSP_PLUGIN_OPT:kspOutputDir=./out \
        -P $KSP_PLUGIN_OPT:cachesDir=./out \
        -P $KSP_PLUGIN_OPT:incremental=false \
        -P $KSP_PLUGIN_OPT:apoption=key1=value1 \
        -P $KSP_PLUGIN_OPT:apoption=key2=value2 \
        $*