KSP is a Kotlin compiler plugin and needs to run with Kotlin compiler. To download and extract them:
#!/bin/bash # Kotlin compiler wget https://github.com/JetBrains/kotlin/releases/download/v1.5.30/kotlin-compiler-1.5.30.zip unzip kotlin-compiler-1.5.30.zip # KSP wget https://github.com/google/ksp/releases/download/1.5.30-1.0.0/artifacts.zip unzip artifacts.zip
To run KSP with kotlinc
, pass the -Xplugin
option to kotlinc
.
-Xplugin=/path/to/symbol-processing-cmdline-1.5.30-1.0.0.jar
This is different from the symbol-processing-1.5.30-1.0.0.jar
, which is designed to be used with kotlin-compiler-embeddable
when running with Gradle. The command line kotlinc
needs symbol-processing-cmdline-1.5.30-1.0.0.jar
.
Note that you'll also need the api jar:
-Xplugin=/path/to/symbol-processing-api-1.5.30-1.0.0.jar
Here is complete example:
#!/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/1.5.30-1.0.0/symbol-processing-cmdline-1.5.30-1.0.0.jar KSP_API_JAR=./com/google/devtools/ksp/symbol-processing-api/1.5.30-1.0.0/symbol-processing-api-1.5.30-1.0.0.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 \ $*