[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) {
|
override fun checkAfterRebuild(buildResult: BuildResult) = with(buildResult) {
|
||||||
assertTasksExecuted(":compileKotlin")
|
assertTasksExecuted(":compileKotlin", ":kaptGenerateStubsKotlin")
|
||||||
assertTasksUpToDate(":kaptGenerateStubsKotlin", ":kaptKotlin")
|
assertTasksUpToDate(":kaptKotlin")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+27
-7
@@ -3,15 +3,13 @@ package org.jetbrains.kotlin.gradle.plugin
|
|||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.tasks.TaskProvider
|
import org.gradle.api.tasks.TaskProvider
|
||||||
import org.gradle.api.tasks.compile.JavaCompile
|
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.logging.kotlinDebug
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.JsIrBinary
|
import org.jetbrains.kotlin.gradle.targets.js.ir.JsIrBinary
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation
|
||||||
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
|
import org.jetbrains.kotlin.gradle.tasks.*
|
||||||
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompileTool
|
import org.jetbrains.kotlin.gradle.utils.whenKaptEnabled
|
||||||
import org.jetbrains.kotlin.gradle.tasks.CompilerPluginOptions
|
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile
|
|
||||||
|
|
||||||
class SubpluginEnvironment(
|
class SubpluginEnvironment(
|
||||||
private val subplugins: List<KotlinCompilerPluginSupportPlugin>,
|
private val subplugins: List<KotlinCompilerPluginSupportPlugin>,
|
||||||
@@ -56,7 +54,7 @@ class SubpluginEnvironment(
|
|||||||
options
|
options
|
||||||
}
|
}
|
||||||
|
|
||||||
val configureKotlinTask: (KotlinCompile<*>) -> Unit = {
|
val configureKotlinTask: (KotlinCompilationTask<*>) -> Unit = {
|
||||||
when (it) {
|
when (it) {
|
||||||
is AbstractKotlinCompile<*> -> it.pluginOptions.add(compilerOptions)
|
is AbstractKotlinCompile<*> -> it.pluginOptions.add(compilerOptions)
|
||||||
is KotlinNativeCompile -> it.compilerPluginOptions.addPluginArgument(compilerOptions.get())
|
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) {
|
if (kotlinCompilation is KotlinJsIrCompilation) {
|
||||||
kotlinCompilation.binaries.all {
|
kotlinCompilation.binaries.all {
|
||||||
@@ -80,6 +79,27 @@ class SubpluginEnvironment(
|
|||||||
return appliedSubplugins
|
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) {
|
private fun Project.addMavenDependency(configuration: String, artifact: SubpluginArtifact) {
|
||||||
val artifactVersion = artifact.version ?: kotlinPluginVersion
|
val artifactVersion = artifact.version ?: kotlinPluginVersion
|
||||||
val mavenCoordinate = "${artifact.groupId}:${artifact.artifactId}:$artifactVersion"
|
val mavenCoordinate = "${artifact.groupId}:${artifact.artifactId}:$artifactVersion"
|
||||||
|
|||||||
Reference in New Issue
Block a user