[Gradle] Fix compiler plugins options were not passed to KaptGenerateStubs task
^KT-58745 Fixed
This commit is contained in:
committed by
Space Team
parent
5f5b32b8ae
commit
37402336d5
+34
@@ -1237,4 +1237,38 @@ open class Kapt3IT : Kapt3BaseIT() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("KT-58745: compiler plugin options should be passed to KaptGenerateStubs task")
|
||||
@GradleTest
|
||||
fun kaptGenerateStubsConfiguredWithCompilerPluginOptions(gradleVersion: GradleVersion) {
|
||||
project(
|
||||
"simple".withPrefix,
|
||||
gradleVersion,
|
||||
buildOptions = defaultBuildOptions.copy(logLevel = LogLevel.DEBUG)
|
||||
) {
|
||||
|
||||
buildGradle.modify {
|
||||
//language=groovy
|
||||
"""
|
||||
|${it.substringBefore("plugins {")}
|
||||
|plugins {
|
||||
| id "org.jetbrains.kotlin.plugin.noarg"
|
||||
|${it.substringAfter("plugins {")}
|
||||
|
|
||||
|noArg {
|
||||
| annotation("my.custom.Annotation")
|
||||
|}
|
||||
""".trimMargin()
|
||||
}
|
||||
|
||||
build(":kaptGenerateStubsKotlin") {
|
||||
assertTasksExecuted(":kaptGenerateStubsKotlin")
|
||||
|
||||
assertCompilerArgument(
|
||||
":kaptGenerateStubsKotlin",
|
||||
"plugin:org.jetbrains.kotlin.noarg:annotation=my.custom.Annotation"
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -192,8 +192,8 @@ class UpToDateIT : KGPBaseTest() {
|
||||
}
|
||||
|
||||
override fun checkAfterRebuild(buildResult: BuildResult) = with(buildResult) {
|
||||
assertTasksExecuted(":compileKotlin")
|
||||
assertTasksUpToDate(":kaptGenerateStubsKotlin", ":kaptKotlin")
|
||||
assertTasksExecuted(":compileKotlin", ":kaptGenerateStubsKotlin")
|
||||
assertTasksUpToDate(":kaptKotlin")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+27
-7
@@ -3,15 +3,13 @@ package org.jetbrains.kotlin.gradle.plugin
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.api.tasks.compile.JavaCompile
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCompile
|
||||
import org.jetbrains.kotlin.gradle.internal.kaptGenerateStubsTaskName
|
||||
import org.jetbrains.kotlin.gradle.logging.kotlinDebug
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
||||
import org.jetbrains.kotlin.gradle.targets.js.ir.JsIrBinary
|
||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation
|
||||
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
|
||||
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompileTool
|
||||
import org.jetbrains.kotlin.gradle.tasks.CompilerPluginOptions
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile
|
||||
import org.jetbrains.kotlin.gradle.tasks.*
|
||||
import org.jetbrains.kotlin.gradle.utils.whenKaptEnabled
|
||||
|
||||
class SubpluginEnvironment(
|
||||
private val subplugins: List<KotlinCompilerPluginSupportPlugin>,
|
||||
@@ -56,7 +54,7 @@ class SubpluginEnvironment(
|
||||
options
|
||||
}
|
||||
|
||||
val configureKotlinTask: (KotlinCompile<*>) -> Unit = {
|
||||
val configureKotlinTask: (KotlinCompilationTask<*>) -> Unit = {
|
||||
when (it) {
|
||||
is AbstractKotlinCompile<*> -> it.pluginOptions.add(compilerOptions)
|
||||
is KotlinNativeCompile -> it.compilerPluginOptions.addPluginArgument(compilerOptions.get())
|
||||
@@ -64,7 +62,8 @@ class SubpluginEnvironment(
|
||||
}
|
||||
}
|
||||
|
||||
kotlinCompilation.compileKotlinTaskProvider.configure(configureKotlinTask)
|
||||
kotlinCompilation.compileTaskProvider.configure(configureKotlinTask)
|
||||
project.configurePluginOptionsForKapt(kotlinCompilation, configureKotlinTask)
|
||||
|
||||
if (kotlinCompilation is KotlinJsIrCompilation) {
|
||||
kotlinCompilation.binaries.all {
|
||||
@@ -80,6 +79,27 @@ class SubpluginEnvironment(
|
||||
return appliedSubplugins
|
||||
}
|
||||
|
||||
private fun Project.configurePluginOptionsForKapt(
|
||||
kotlinCompilation: KotlinCompilation<*>,
|
||||
configureKotlinTask: (KotlinCompilationTask<*>) -> Unit,
|
||||
) {
|
||||
if (kotlinCompilation is KotlinJvmCompilation ||
|
||||
kotlinCompilation is KotlinWithJavaCompilation<*, *> ||
|
||||
kotlinCompilation is KotlinJvmAndroidCompilation
|
||||
) {
|
||||
whenKaptEnabled {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
val kaptGenerateStubsTaskName = (kotlinCompilation.compileTaskProvider as TaskProvider<KotlinJvmCompile>)
|
||||
.kaptGenerateStubsTaskName
|
||||
tasks.withType<KaptGenerateStubs>().configureEach { task ->
|
||||
if (task.name == kaptGenerateStubsTaskName) {
|
||||
configureKotlinTask(task)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun Project.addMavenDependency(configuration: String, artifact: SubpluginArtifact) {
|
||||
val artifactVersion = artifact.version ?: kotlinPluginVersion
|
||||
val mavenCoordinate = "${artifact.groupId}:${artifact.artifactId}:$artifactVersion"
|
||||
|
||||
Reference in New Issue
Block a user