diff --git a/gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt b/gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt index fb0a116580..3b5bc0c3fd 100644 --- a/gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt +++ b/gradle-plugin/src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt @@ -537,10 +537,16 @@ class KspGradleSubplugin @Inject internal constructor(private val registry: Tool kspTask.compilerPluginOptions.addPluginArgument(kotlinCompileTask.compilerPluginOptions) } kspTask.commonSources.from(kotlinCompileTask.commonSources) - kspTask.options.add(FilesSubpluginOption("apclasspath", processorClasspath.files.toList())) - val kspOptions = kspTask.options.get().flatMap { listOf("-P", it.toArg()) } - kspTask.compilerOptions.freeCompilerArgs.value( - kspOptions + kotlinCompileTask.compilerOptions.freeCompilerArgs.get() + kspTask.options.add( + ClasspathFilesSubpluginOption("apclasspath", processorClasspath) + ) + kspTask.compilerOptions.freeCompilerArgs.addAll( + kspTask.options.map { + it.flatMap { listOf("-P", it.toArg()) } + } + ) + kspTask.compilerOptions.freeCompilerArgs.addAll( + kotlinCompileTask.compilerOptions.freeCompilerArgs ) configureLanguageVersion(kspTask) // Cannot use lambda; See below for details. @@ -786,3 +792,15 @@ internal fun Configuration.markResolvable(): Configuration = apply { isCanBeConsumed = false isVisible = false } + + +internal class ClasspathFilesSubpluginOption( + key: String, + val configuration: Configuration +) : SubpluginOption( + key = key, + lazyValue = lazy { + val files = configuration.resolve() + files.joinToString(File.pathSeparator) { it.normalize().absolutePath } + } +)