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.CompilerPluginOptions
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompileTaskData
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompileTaskData
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
|
|
||||||
import java.io.ByteArrayOutputStream
|
import java.io.ByteArrayOutputStream
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.ObjectOutputStream
|
import java.io.ObjectOutputStream
|
||||||
@@ -324,12 +323,15 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin<KotlinCompile> {
|
|||||||
subluginOptionsFromProvidedApOptions
|
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 compilerPluginId = getCompilerPluginId()
|
||||||
val kaptSubpluginOptions = buildOptions(aptMode, javacOptions)
|
task.registerSubpluginOptionsAsInputs(compilerPluginId, options)
|
||||||
task.registerSubpluginOptionsAsInputs(compilerPluginId, kaptSubpluginOptions)
|
|
||||||
|
|
||||||
for (option in kaptSubpluginOptions) {
|
for (option in options) {
|
||||||
container.addPluginArgument(compilerPluginId, option)
|
container.addPluginArgument(compilerPluginId, option)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -441,7 +443,8 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin<KotlinCompile> {
|
|||||||
SubpluginOption("incrementalCache", kaptTask.incAptCache!!.absolutePath))
|
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) {
|
if (kaptTask is KaptWithoutKotlincTask) {
|
||||||
@@ -449,9 +452,11 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin<KotlinCompile> {
|
|||||||
isVerbose = project.isKaptVerbose()
|
isVerbose = project.isKaptVerbose()
|
||||||
mapDiagnosticLocations = kaptExtension.mapDiagnosticLocations
|
mapDiagnosticLocations = kaptExtension.mapDiagnosticLocations
|
||||||
annotationProcessorFqNames = kaptExtension.processors.split(',').filter { it.isNotEmpty() }
|
annotationProcessorFqNames = kaptExtension.processors.split(',').filter { it.isNotEmpty() }
|
||||||
processorOptions = getAPOptions().map { it.key to it.value }.toMap()
|
|
||||||
javacOptions = dslJavacOptions
|
javacOptions = dslJavacOptions
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val subpluginOptions = getAPOptions()
|
||||||
|
registerSubpluginOptions(kaptTask, kaptTask.processorOptions, subpluginOptions)
|
||||||
}
|
}
|
||||||
|
|
||||||
return kaptTask
|
return kaptTask
|
||||||
@@ -496,7 +501,9 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin<KotlinCompile> {
|
|||||||
PropertiesProvider(project).mapKotlinTaskProperties(kaptTask)
|
PropertiesProvider(project).mapKotlinTaskProperties(kaptTask)
|
||||||
|
|
||||||
kaptTask.kaptClasspathConfigurations = kaptClasspathConfigurations
|
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
|
return kaptTask
|
||||||
}
|
}
|
||||||
|
|||||||
+17
-7
@@ -5,16 +5,16 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.internal
|
package org.jetbrains.kotlin.gradle.internal
|
||||||
|
|
||||||
import org.gradle.api.tasks.Classpath
|
import org.gradle.api.tasks.*
|
||||||
import org.gradle.api.tasks.Input
|
|
||||||
import org.gradle.api.tasks.InputFiles
|
|
||||||
import org.gradle.api.tasks.TaskAction
|
|
||||||
import org.gradle.api.tasks.incremental.IncrementalTaskInputs
|
import org.gradle.api.tasks.incremental.IncrementalTaskInputs
|
||||||
import org.gradle.workers.IsolationMode
|
import org.gradle.workers.IsolationMode
|
||||||
import org.gradle.workers.WorkerExecutor
|
import org.gradle.workers.WorkerExecutor
|
||||||
import org.jetbrains.kotlin.gradle.internal.Kapt3KotlinGradleSubplugin.Companion.KAPT_WORKER_DEPENDENCIES_CONFIGURATION_NAME
|
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.internal.kapt.incremental.KaptIncrementalChanges
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.CompositeSubpluginOption
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPluginWrapper
|
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.findKotlinStdlibClasspath
|
||||||
import org.jetbrains.kotlin.gradle.tasks.findToolsJar
|
import org.jetbrains.kotlin.gradle.tasks.findToolsJar
|
||||||
import org.jetbrains.kotlin.utils.PathUtil
|
import org.jetbrains.kotlin.utils.PathUtil
|
||||||
@@ -40,12 +40,22 @@ open class KaptWithoutKotlincTask @Inject constructor(private val workerExecutor
|
|||||||
@get:Input
|
@get:Input
|
||||||
lateinit var annotationProcessorFqNames: List<String>
|
lateinit var annotationProcessorFqNames: List<String>
|
||||||
|
|
||||||
@get:Input
|
@get:Internal
|
||||||
lateinit var processorOptions: Map<String, String>
|
internal val processorOptions = CompilerPluginOptions()
|
||||||
|
|
||||||
@get:Input
|
@get:Input
|
||||||
lateinit var javacOptions: Map<String, String>
|
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
|
@TaskAction
|
||||||
fun compile(inputs: IncrementalTaskInputs) {
|
fun compile(inputs: IncrementalTaskInputs) {
|
||||||
logger.info("Running kapt annotation processing using the Gradle Worker API")
|
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(),
|
kaptClasspath.files.toList(),
|
||||||
annotationProcessorFqNames,
|
annotationProcessorFqNames,
|
||||||
|
|
||||||
processorOptions,
|
getAnnotationProcessorOptions(),
|
||||||
javacOptions,
|
javacOptions,
|
||||||
|
|
||||||
kaptFlagsForWorker
|
kaptFlagsForWorker
|
||||||
|
|||||||
Reference in New Issue
Block a user