diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt index 5682dc13feb..171ab36d4d0 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt @@ -32,7 +32,6 @@ import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.tasks.CompilerPluginOptions import org.jetbrains.kotlin.gradle.tasks.KotlinCompileTaskData import org.jetbrains.kotlin.gradle.tasks.KotlinCompile -import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast import java.io.ByteArrayOutputStream import java.io.File import java.io.ObjectOutputStream @@ -324,12 +323,15 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin { subluginOptionsFromProvidedApOptions } - private fun Kapt3SubpluginContext.buildAndAddOptionsTo(task: Task, container: CompilerPluginOptions, aptMode: String, javacOptions: Map) { + private fun Kapt3SubpluginContext.registerSubpluginOptions( + task: Task, + container: CompilerPluginOptions, + options: List + ) { val compilerPluginId = getCompilerPluginId() - val kaptSubpluginOptions = buildOptions(aptMode, javacOptions) - task.registerSubpluginOptionsAsInputs(compilerPluginId, kaptSubpluginOptions) + task.registerSubpluginOptionsAsInputs(compilerPluginId, options) - for (option in kaptSubpluginOptions) { + for (option in options) { container.addPluginArgument(compilerPluginId, option) } @@ -441,7 +443,8 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin { SubpluginOption("incrementalCache", kaptTask.incAptCache!!.absolutePath)) } - buildAndAddOptionsTo(kaptTask, kaptTask.pluginOptions, aptMode = "apt", javacOptions = dslJavacOptions) + val subpluginOptions = buildOptions("apt", dslJavacOptions) + registerSubpluginOptions(kaptTask, kaptTask.pluginOptions, subpluginOptions) } if (kaptTask is KaptWithoutKotlincTask) { @@ -449,9 +452,11 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin { isVerbose = project.isKaptVerbose() mapDiagnosticLocations = kaptExtension.mapDiagnosticLocations annotationProcessorFqNames = kaptExtension.processors.split(',').filter { it.isNotEmpty() } - processorOptions = getAPOptions().map { it.key to it.value }.toMap() javacOptions = dslJavacOptions } + + val subpluginOptions = getAPOptions() + registerSubpluginOptions(kaptTask, kaptTask.processorOptions, subpluginOptions) } return kaptTask @@ -496,7 +501,9 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin { PropertiesProvider(project).mapKotlinTaskProperties(kaptTask) kaptTask.kaptClasspathConfigurations = kaptClasspathConfigurations - buildAndAddOptionsTo(kaptTask, kaptTask.pluginOptions, aptMode = "stubs", javacOptions = kaptExtension.getJavacOptions()) + + val subpluginOptions = buildOptions("stubs", kaptExtension.getJavacOptions()) + registerSubpluginOptions(kaptTask, kaptTask.pluginOptions, subpluginOptions) return kaptTask } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptWithoutKotlincTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptWithoutKotlincTask.kt index 5c084934218..59dcc79bf6d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptWithoutKotlincTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptWithoutKotlincTask.kt @@ -5,16 +5,16 @@ package org.jetbrains.kotlin.gradle.internal -import org.gradle.api.tasks.Classpath -import org.gradle.api.tasks.Input -import org.gradle.api.tasks.InputFiles -import org.gradle.api.tasks.TaskAction +import org.gradle.api.tasks.* import org.gradle.api.tasks.incremental.IncrementalTaskInputs import org.gradle.workers.IsolationMode import org.gradle.workers.WorkerExecutor import org.jetbrains.kotlin.gradle.internal.Kapt3KotlinGradleSubplugin.Companion.KAPT_WORKER_DEPENDENCIES_CONFIGURATION_NAME import org.jetbrains.kotlin.gradle.internal.kapt.incremental.KaptIncrementalChanges +import org.jetbrains.kotlin.gradle.plugin.CompositeSubpluginOption import org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPluginWrapper +import org.jetbrains.kotlin.gradle.plugin.SubpluginOption +import org.jetbrains.kotlin.gradle.tasks.CompilerPluginOptions import org.jetbrains.kotlin.gradle.tasks.findKotlinStdlibClasspath import org.jetbrains.kotlin.gradle.tasks.findToolsJar import org.jetbrains.kotlin.utils.PathUtil @@ -40,12 +40,22 @@ open class KaptWithoutKotlincTask @Inject constructor(private val workerExecutor @get:Input lateinit var annotationProcessorFqNames: List - @get:Input - lateinit var processorOptions: Map + @get:Internal + internal val processorOptions = CompilerPluginOptions() @get:Input lateinit var javacOptions: Map + private fun getAnnotationProcessorOptions(): Map { + val options = processorOptions.subpluginOptionsByPluginId[Kapt3KotlinGradleSubplugin.KAPT_SUBPLUGIN_ID] ?: return emptyMap() + + val result = mutableMapOf() + for (option in options) { + result[option.key] = option.value + } + return result + } + @TaskAction fun compile(inputs: IncrementalTaskInputs) { logger.info("Running kapt annotation processing using the Gradle Worker API") @@ -86,7 +96,7 @@ open class KaptWithoutKotlincTask @Inject constructor(private val workerExecutor kaptClasspath.files.toList(), annotationProcessorFqNames, - processorOptions, + getAnnotationProcessorOptions(), javacOptions, kaptFlagsForWorker