[Gradle] Use BuildFeatures service to get configuration cache feature state
^KT-64355 In Progress
This commit is contained in:
committed by
Space Team
parent
2a195062a8
commit
e405072419
+16
-11
@@ -6,38 +6,43 @@
|
|||||||
package org.jetbrains.kotlin.gradle.plugin.internal
|
package org.jetbrains.kotlin.gradle.plugin.internal
|
||||||
|
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.invocation.Gradle
|
import org.gradle.api.configuration.BuildFeatures
|
||||||
import org.jetbrains.kotlin.gradle.plugin.VariantImplementationFactories
|
import org.jetbrains.kotlin.gradle.plugin.VariantImplementationFactories
|
||||||
import org.jetbrains.kotlin.gradle.plugin.variantImplementationFactory
|
import org.jetbrains.kotlin.gradle.plugin.variantImplementationFactory
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* KGP was using `StartParametersInternal.isConfigurationCache` to find out whether the build requests configuration cache.
|
* KGP was using `StartParametersInternal.isConfigurationCache` to find out whether the build requests configuration cache.
|
||||||
|
*
|
||||||
* That property became deprecated since Gradle 7.1 and is scheduled to be removed soon.
|
* That property became deprecated since Gradle 7.1 and is scheduled to be removed soon.
|
||||||
* As a replacement, Gradle provides [org.gradle.StartParameter.isConfigurationCacheRequested] since Gradle 7.6
|
*
|
||||||
|
* As a replacement, Gradle provides [org.gradle.StartParameter.isConfigurationCacheRequested] since Gradle 7.6, which is deprecated
|
||||||
|
* in 8.5 release.
|
||||||
|
*
|
||||||
|
* As a replacement, Gradle provides [BuildFeatures.getConfigurationCache] service since Gradle 8.5.
|
||||||
*/
|
*/
|
||||||
internal interface ConfigurationCacheStartParameterAccessor {
|
internal interface ConfigurationCacheStartParameterAccessor {
|
||||||
val isConfigurationCacheRequested: Boolean
|
val isConfigurationCacheRequested: Boolean
|
||||||
|
|
||||||
interface Factory : VariantImplementationFactories.VariantImplementationFactory {
|
interface Factory : VariantImplementationFactories.VariantImplementationFactory {
|
||||||
fun getInstance(gradle: Gradle): ConfigurationCacheStartParameterAccessor
|
fun getInstance(project: Project): ConfigurationCacheStartParameterAccessor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class DefaultConfigurationCacheStartParameterAccessorVariantFactory :
|
internal class DefaultConfigurationCacheStartParameterAccessorVariantFactory :
|
||||||
ConfigurationCacheStartParameterAccessor.Factory {
|
ConfigurationCacheStartParameterAccessor.Factory {
|
||||||
override fun getInstance(gradle: Gradle) = DefaultConfigurationCacheStartParameterAccessor(gradle)
|
override fun getInstance(project: Project): ConfigurationCacheStartParameterAccessor = project
|
||||||
|
.objects
|
||||||
|
.newInstance(DefaultConfigurationCacheStartParameterAccessor::class.java)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class DefaultConfigurationCacheStartParameterAccessor(
|
internal abstract class DefaultConfigurationCacheStartParameterAccessor @Inject constructor(
|
||||||
private val gradle: Gradle,
|
buildFeatures: BuildFeatures,
|
||||||
) : ConfigurationCacheStartParameterAccessor {
|
) : ConfigurationCacheStartParameterAccessor {
|
||||||
override val isConfigurationCacheRequested: Boolean by lazy {
|
override val isConfigurationCacheRequested: Boolean = buildFeatures.configurationCache.active.orElse(false).get()
|
||||||
@Suppress("DEPRECATION") // TODO: will be fixed separately via KT-64355
|
|
||||||
gradle.startParameter.isConfigurationCacheRequested
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal val Project.isConfigurationCacheRequested
|
internal val Project.isConfigurationCacheRequested
|
||||||
get() = variantImplementationFactory<ConfigurationCacheStartParameterAccessor.Factory>()
|
get() = variantImplementationFactory<ConfigurationCacheStartParameterAccessor.Factory>()
|
||||||
.getInstance(gradle)
|
.getInstance(this)
|
||||||
.isConfigurationCacheRequested
|
.isConfigurationCacheRequested
|
||||||
|
|||||||
+2
-1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.plugin.internal
|
package org.jetbrains.kotlin.gradle.plugin.internal
|
||||||
|
|
||||||
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.internal.StartParameterInternal
|
import org.gradle.api.internal.StartParameterInternal
|
||||||
import org.gradle.api.invocation.Gradle
|
import org.gradle.api.invocation.Gradle
|
||||||
|
|
||||||
@@ -16,6 +17,6 @@ internal class ConfigurationCacheStartParameterAccessorG70(
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal class Factory : ConfigurationCacheStartParameterAccessor.Factory {
|
internal class Factory : ConfigurationCacheStartParameterAccessor.Factory {
|
||||||
override fun getInstance(gradle: Gradle) = ConfigurationCacheStartParameterAccessorG70(gradle)
|
override fun getInstance(project: Project) = ConfigurationCacheStartParameterAccessorG70(project.gradle)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.plugin.internal
|
package org.jetbrains.kotlin.gradle.plugin.internal
|
||||||
|
|
||||||
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.internal.StartParameterInternal
|
import org.gradle.api.internal.StartParameterInternal
|
||||||
import org.gradle.api.invocation.Gradle
|
import org.gradle.api.invocation.Gradle
|
||||||
|
|
||||||
@@ -17,6 +18,6 @@ internal class ConfigurationCacheStartParameterAccessorG71(
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal class Factory : ConfigurationCacheStartParameterAccessor.Factory {
|
internal class Factory : ConfigurationCacheStartParameterAccessor.Factory {
|
||||||
override fun getInstance(gradle: Gradle) = ConfigurationCacheStartParameterAccessorG71(gradle)
|
override fun getInstance(project: Project) = ConfigurationCacheStartParameterAccessorG71(project.gradle)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.plugin.internal
|
package org.jetbrains.kotlin.gradle.plugin.internal
|
||||||
|
|
||||||
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.internal.StartParameterInternal
|
import org.gradle.api.internal.StartParameterInternal
|
||||||
import org.gradle.api.invocation.Gradle
|
import org.gradle.api.invocation.Gradle
|
||||||
|
|
||||||
@@ -17,6 +18,6 @@ internal class ConfigurationCacheStartParameterAccessorG74(
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal class Factory : ConfigurationCacheStartParameterAccessor.Factory {
|
internal class Factory : ConfigurationCacheStartParameterAccessor.Factory {
|
||||||
override fun getInstance(gradle: Gradle) = ConfigurationCacheStartParameterAccessorG74(gradle)
|
override fun getInstance(project: Project) = ConfigurationCacheStartParameterAccessorG74(project.gradle)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.plugin.internal
|
package org.jetbrains.kotlin.gradle.plugin.internal
|
||||||
|
|
||||||
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.internal.StartParameterInternal
|
import org.gradle.api.internal.StartParameterInternal
|
||||||
import org.gradle.api.invocation.Gradle
|
import org.gradle.api.invocation.Gradle
|
||||||
|
|
||||||
@@ -17,6 +18,6 @@ internal class ConfigurationCacheStartParameterAccessorG75(
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal class Factory : ConfigurationCacheStartParameterAccessor.Factory {
|
internal class Factory : ConfigurationCacheStartParameterAccessor.Factory {
|
||||||
override fun getInstance(gradle: Gradle) = ConfigurationCacheStartParameterAccessorG75(gradle)
|
override fun getInstance(project: Project) = ConfigurationCacheStartParameterAccessorG75(project.gradle)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -10,7 +10,6 @@ import org.gradle.api.Named
|
|||||||
import org.gradle.api.NamedDomainObjectContainer
|
import org.gradle.api.NamedDomainObjectContainer
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.file.SourceDirectorySet
|
import org.gradle.api.file.SourceDirectorySet
|
||||||
import org.gradle.api.model.ObjectFactory
|
|
||||||
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
||||||
import org.jetbrains.kotlin.gradle.plugin.internal.*
|
import org.jetbrains.kotlin.gradle.plugin.internal.*
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@@ -140,4 +139,6 @@ private fun Project.registerVariantImplementations() {
|
|||||||
ProjectIsolationStartParameterAccessorG76.Factory()
|
ProjectIsolationStartParameterAccessorG76.Factory()
|
||||||
factories[CompatibilityConventionRegistrar.Factory::class] =
|
factories[CompatibilityConventionRegistrar.Factory::class] =
|
||||||
CompatibilityConventionRegistrarG76.Factory()
|
CompatibilityConventionRegistrarG76.Factory()
|
||||||
|
factories[ConfigurationCacheStartParameterAccessor.Factory::class] =
|
||||||
|
ConfigurationCacheStartParameterAccessorG76.Factory()
|
||||||
}
|
}
|
||||||
|
|||||||
+21
@@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.gradle.plugin.internal
|
||||||
|
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.invocation.Gradle
|
||||||
|
|
||||||
|
internal class ConfigurationCacheStartParameterAccessorG76(
|
||||||
|
private val gradle: Gradle,
|
||||||
|
) : ConfigurationCacheStartParameterAccessor {
|
||||||
|
override val isConfigurationCacheRequested: Boolean by lazy {
|
||||||
|
gradle.startParameter.isConfigurationCacheRequested
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class Factory : ConfigurationCacheStartParameterAccessor.Factory {
|
||||||
|
override fun getInstance(project: Project) = ConfigurationCacheStartParameterAccessorG76(project.gradle)
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
-1
@@ -10,7 +10,6 @@ import org.gradle.api.Named
|
|||||||
import org.gradle.api.NamedDomainObjectContainer
|
import org.gradle.api.NamedDomainObjectContainer
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.file.SourceDirectorySet
|
import org.gradle.api.file.SourceDirectorySet
|
||||||
import org.gradle.api.model.ObjectFactory
|
|
||||||
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
||||||
import org.jetbrains.kotlin.gradle.plugin.internal.*
|
import org.jetbrains.kotlin.gradle.plugin.internal.*
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@@ -137,4 +136,6 @@ private fun Project.registerVariantImplementations() {
|
|||||||
val factories = VariantImplementationFactoriesConfigurator.get(gradle)
|
val factories = VariantImplementationFactoriesConfigurator.get(gradle)
|
||||||
factories[CompatibilityConventionRegistrar.Factory::class] =
|
factories[CompatibilityConventionRegistrar.Factory::class] =
|
||||||
CompatibilityConventionRegistrarG80.Factory()
|
CompatibilityConventionRegistrarG80.Factory()
|
||||||
|
factories[ConfigurationCacheStartParameterAccessor.Factory::class] =
|
||||||
|
ConfigurationCacheStartParameterAccessorG80.Factory()
|
||||||
}
|
}
|
||||||
|
|||||||
+21
@@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.gradle.plugin.internal
|
||||||
|
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.invocation.Gradle
|
||||||
|
|
||||||
|
internal class ConfigurationCacheStartParameterAccessorG80(
|
||||||
|
private val gradle: Gradle,
|
||||||
|
) : ConfigurationCacheStartParameterAccessor {
|
||||||
|
override val isConfigurationCacheRequested: Boolean by lazy {
|
||||||
|
gradle.startParameter.isConfigurationCacheRequested
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class Factory : ConfigurationCacheStartParameterAccessor.Factory {
|
||||||
|
override fun getInstance(project: Project) = ConfigurationCacheStartParameterAccessorG80(project.gradle)
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
-1
@@ -10,7 +10,6 @@ import org.gradle.api.Named
|
|||||||
import org.gradle.api.NamedDomainObjectContainer
|
import org.gradle.api.NamedDomainObjectContainer
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.file.SourceDirectorySet
|
import org.gradle.api.file.SourceDirectorySet
|
||||||
import org.gradle.api.model.ObjectFactory
|
|
||||||
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
||||||
import org.jetbrains.kotlin.gradle.plugin.internal.*
|
import org.jetbrains.kotlin.gradle.plugin.internal.*
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@@ -137,4 +136,6 @@ private fun Project.registerVariantImplementations() {
|
|||||||
val factories = VariantImplementationFactoriesConfigurator.get(gradle)
|
val factories = VariantImplementationFactoriesConfigurator.get(gradle)
|
||||||
factories[CompatibilityConventionRegistrar.Factory::class] =
|
factories[CompatibilityConventionRegistrar.Factory::class] =
|
||||||
CompatibilityConventionRegistrarG81.Factory()
|
CompatibilityConventionRegistrarG81.Factory()
|
||||||
|
factories[ConfigurationCacheStartParameterAccessor.Factory::class] =
|
||||||
|
ConfigurationCacheStartParameterAccessorG81.Factory()
|
||||||
}
|
}
|
||||||
|
|||||||
+21
@@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.gradle.plugin.internal
|
||||||
|
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.invocation.Gradle
|
||||||
|
|
||||||
|
internal class ConfigurationCacheStartParameterAccessorG81(
|
||||||
|
private val gradle: Gradle,
|
||||||
|
) : ConfigurationCacheStartParameterAccessor {
|
||||||
|
override val isConfigurationCacheRequested: Boolean by lazy {
|
||||||
|
gradle.startParameter.isConfigurationCacheRequested
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class Factory : ConfigurationCacheStartParameterAccessor.Factory {
|
||||||
|
override fun getInstance(project: Project) = ConfigurationCacheStartParameterAccessorG81(project.gradle)
|
||||||
|
}
|
||||||
|
}
|
||||||
+5
-3
@@ -10,8 +10,9 @@ import org.gradle.api.Named
|
|||||||
import org.gradle.api.NamedDomainObjectContainer
|
import org.gradle.api.NamedDomainObjectContainer
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.file.SourceDirectorySet
|
import org.gradle.api.file.SourceDirectorySet
|
||||||
import org.gradle.api.model.ObjectFactory
|
|
||||||
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.internal.ConfigurationCacheStartParameterAccessor
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.internal.ConfigurationCacheStartParameterAccessorG82
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
private const val PLUGIN_VARIANT_NAME = "gradle82"
|
private const val PLUGIN_VARIANT_NAME = "gradle82"
|
||||||
@@ -132,7 +133,8 @@ open class KotlinApiPlugin : KotlinBaseApiPlugin() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("UnusedReceiverParameter")
|
|
||||||
private fun Project.registerVariantImplementations() {
|
private fun Project.registerVariantImplementations() {
|
||||||
|
val factories = VariantImplementationFactoriesConfigurator.get(gradle)
|
||||||
|
factories[ConfigurationCacheStartParameterAccessor.Factory::class] =
|
||||||
|
ConfigurationCacheStartParameterAccessorG82.Factory()
|
||||||
}
|
}
|
||||||
|
|||||||
+21
@@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.gradle.plugin.internal
|
||||||
|
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.invocation.Gradle
|
||||||
|
|
||||||
|
internal class ConfigurationCacheStartParameterAccessorG82(
|
||||||
|
private val gradle: Gradle,
|
||||||
|
) : ConfigurationCacheStartParameterAccessor {
|
||||||
|
override val isConfigurationCacheRequested: Boolean by lazy {
|
||||||
|
gradle.startParameter.isConfigurationCacheRequested
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class Factory : ConfigurationCacheStartParameterAccessor.Factory {
|
||||||
|
override fun getInstance(project: Project) = ConfigurationCacheStartParameterAccessorG82(project.gradle)
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
-1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.plugin.internal
|
package org.jetbrains.kotlin.gradle.plugin.internal
|
||||||
|
|
||||||
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.internal.StartParameterInternal
|
import org.gradle.api.internal.StartParameterInternal
|
||||||
import org.gradle.api.invocation.Gradle
|
import org.gradle.api.invocation.Gradle
|
||||||
|
|
||||||
@@ -16,6 +17,6 @@ internal class ConfigurationCacheStartParameterAccessorG6(
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal class Factory : ConfigurationCacheStartParameterAccessor.Factory {
|
internal class Factory : ConfigurationCacheStartParameterAccessor.Factory {
|
||||||
override fun getInstance(gradle: Gradle) = ConfigurationCacheStartParameterAccessorG6(gradle)
|
override fun getInstance(project: Project) = ConfigurationCacheStartParameterAccessorG6(project.gradle)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user