From 02bf10f21a13ea0d9597fa0779d2bec85e1f3a8f Mon Sep 17 00:00:00 2001 From: "Alexander.Likhachev" Date: Thu, 12 Jan 2023 11:41:28 +0100 Subject: [PATCH] [Gradle] Declare build services usages for the Kotlin/JVM plugin #KT-52149 In Progress #KT-55174 Fixed #KT-55741 Fixed --- .../kotlin/gradle/BuildServiceDeclarationIT.kt | 2 -- .../gradle/plugin/VariantImplementationFactories.kt | 5 +++++ .../kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt | 6 +++++- .../configuration/AbstractKotlinCompileConfig.kt | 11 +++++++---- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildServiceDeclarationIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildServiceDeclarationIT.kt index d7103572d09..342d91aadb8 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildServiceDeclarationIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildServiceDeclarationIT.kt @@ -19,7 +19,6 @@ class BuildServiceDeclarationIT : KGPBaseTest() { warningMode = WarningMode.All // we currently have other warnings when `STABLE_CONFIGURATION_CACHE` is enabled unrelated to build services declaration, so we check for this kind of warnings in the build output ) - @Disabled @DisplayName("Build services are registered for Kotlin/JVM projects") @GradleTest @JvmGradlePluginTests @@ -71,7 +70,6 @@ class BuildServiceDeclarationIT : KGPBaseTest() { } } - @Disabled @DisplayName("Build services are registered for Kapt projects") @GradleTest @OtherGradlePluginTests diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/VariantImplementationFactories.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/VariantImplementationFactories.kt index a6e62a6ea53..b1bd67ff7d8 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/VariantImplementationFactories.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/VariantImplementationFactories.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.gradle.plugin +import org.gradle.api.Task import org.gradle.api.invocation.Gradle import org.gradle.api.provider.Provider import org.gradle.api.services.BuildService @@ -61,6 +62,10 @@ abstract class VariantImplementationFactories : BuildService Gradle.variantImplementationFactory(): T = VariantImplementationFactories.get(this)[T::class] +internal fun Task.declareVariantImplementationFactoryUsage() { + usesService(VariantImplementationFactories.getProvider(project.gradle)) +} + internal inline fun < reified T : VariantImplementationFactories.VariantImplementationFactory > Gradle.variantImplementationFactoryProvider(): Provider = diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index 281b59c308d..626ba5094f7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -232,6 +232,8 @@ abstract class GradleCompileTaskProvider @Inject constructor( GradleCompilerRunner.buildModulesInfo(gradle) } ) + }.also { + task.usesService(it) } } ) @@ -379,7 +381,9 @@ abstract class AbstractKotlinCompile @Inject constr } ) - private val systemPropertiesService = CompilerSystemPropertiesService.registerIfAbsent(project.gradle) + private val systemPropertiesService = CompilerSystemPropertiesService.registerIfAbsent(project.gradle).also { + usesService(it) + } @get:Internal internal abstract val preciseCompilationResultsBackup: Property diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/AbstractKotlinCompileConfig.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/AbstractKotlinCompileConfig.kt index 81c103660a4..5fd35584b96 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/AbstractKotlinCompileConfig.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/AbstractKotlinCompileConfig.kt @@ -59,10 +59,12 @@ internal abstract class AbstractKotlinCompileConfig + task.buildMetricsService.value(metricsService) + task.usesService(metricsService) + BuildReportsService.registerIfAbsent(project, metricsService)?.also { reportsService -> + task.buildReportsService.value(reportsService) + task.usesService(reportsService) } } @@ -110,6 +112,7 @@ internal abstract class AbstractKotlinCompileConfig