Kapt: Register AP options as inputs in worker mode as it done with kotlinc compiler plugin mode
This commit fixes the 'KotlinAndroid32GradleIT.testKaptUsingApOptionProvidersAsNestedInputOutput()' test that started to fail after switching to the worker API mode by default.
This commit is contained in:
+15
-8
@@ -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<KotlinCompile> {
|
||||
subluginOptionsFromProvidedApOptions
|
||||
}
|
||||
|
||||
private fun Kapt3SubpluginContext.buildAndAddOptionsTo(task: Task, container: CompilerPluginOptions, aptMode: String, javacOptions: Map<String, String>) {
|
||||
private fun Kapt3SubpluginContext.registerSubpluginOptions(
|
||||
task: Task,
|
||||
container: CompilerPluginOptions,
|
||||
options: List<SubpluginOption>
|
||||
) {
|
||||
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<KotlinCompile> {
|
||||
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<KotlinCompile> {
|
||||
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<KotlinCompile> {
|
||||
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
|
||||
}
|
||||
|
||||
+17
-7
@@ -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<String>
|
||||
|
||||
@get:Input
|
||||
lateinit var processorOptions: Map<String, String>
|
||||
@get:Internal
|
||||
internal val processorOptions = CompilerPluginOptions()
|
||||
|
||||
@get:Input
|
||||
lateinit var javacOptions: Map<String, String>
|
||||
|
||||
private fun getAnnotationProcessorOptions(): Map<String, String> {
|
||||
val options = processorOptions.subpluginOptionsByPluginId[Kapt3KotlinGradleSubplugin.KAPT_SUBPLUGIN_ID] ?: return emptyMap()
|
||||
|
||||
val result = mutableMapOf<String, String>()
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user