[Gradle] Use BuildFeatures service to get project isolation feature state
^KT-64355 Verification Pending
This commit is contained in:
committed by
Space Team
parent
e405072419
commit
f5de0f9399
+1
-1
@@ -175,7 +175,7 @@ abstract class DefaultKotlinBasePlugin : KotlinBasePlugin {
|
|||||||
|
|
||||||
factories.putIfAbsent(
|
factories.putIfAbsent(
|
||||||
ProjectIsolationStartParameterAccessor.Factory::class,
|
ProjectIsolationStartParameterAccessor.Factory::class,
|
||||||
DefaultProjectIsolationStartParameterAccessorVariantFactory()
|
DefaultProjectIsolationStartParameterAccessor.Factory()
|
||||||
)
|
)
|
||||||
|
|
||||||
factories.putIfAbsent(
|
factories.putIfAbsent(
|
||||||
|
|||||||
+16
-16
@@ -6,38 +6,38 @@
|
|||||||
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.internal.StartParameterInternal
|
import org.gradle.api.configuration.BuildFeatures
|
||||||
import org.gradle.api.invocation.Gradle
|
|
||||||
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 org.jetbrains.kotlin.gradle.utils.newInstance
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gradle 8.0 has changed internal method return type to `Option.Value<Boolean>` from previous `BuildOption.Value<Boolean>`.
|
* Gradle 8.0 has changed the internal method return type to `Option.Value<Boolean>` from previous `BuildOption.Value<Boolean>`.
|
||||||
|
*
|
||||||
|
* Gradle 8.5 has introduced an official API via [BuildFeatures] service.
|
||||||
*/
|
*/
|
||||||
interface ProjectIsolationStartParameterAccessor {
|
interface ProjectIsolationStartParameterAccessor {
|
||||||
val isProjectIsolationEnabled: Boolean
|
val isProjectIsolationEnabled: Boolean
|
||||||
|
|
||||||
interface Factory : VariantImplementationFactories.VariantImplementationFactory {
|
interface Factory : VariantImplementationFactories.VariantImplementationFactory {
|
||||||
fun getInstance(gradle: Gradle): ProjectIsolationStartParameterAccessor
|
fun getInstance(project: Project): ProjectIsolationStartParameterAccessor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class DefaultProjectIsolationStartParameterAccessorVariantFactory :
|
internal abstract class DefaultProjectIsolationStartParameterAccessor @Inject constructor(
|
||||||
ProjectIsolationStartParameterAccessor.Factory {
|
buildFeatures: BuildFeatures
|
||||||
override fun getInstance(gradle: Gradle): ProjectIsolationStartParameterAccessor {
|
|
||||||
return DefaultProjectIsolationStartParameterAccessor(gradle)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal class DefaultProjectIsolationStartParameterAccessor(
|
|
||||||
private val gradle: Gradle
|
|
||||||
) : ProjectIsolationStartParameterAccessor {
|
) : ProjectIsolationStartParameterAccessor {
|
||||||
override val isProjectIsolationEnabled: Boolean by lazy {
|
override val isProjectIsolationEnabled: Boolean = buildFeatures.isolatedProjects.active.orElse(false).get()
|
||||||
(gradle.startParameter as StartParameterInternal).isolatedProjects.get()
|
|
||||||
|
internal class Factory : ProjectIsolationStartParameterAccessor.Factory {
|
||||||
|
override fun getInstance(project: Project): ProjectIsolationStartParameterAccessor = project
|
||||||
|
.objects
|
||||||
|
.newInstance<DefaultProjectIsolationStartParameterAccessor>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal val Project.isProjectIsolationEnabled
|
internal val Project.isProjectIsolationEnabled
|
||||||
get() = variantImplementationFactory<ProjectIsolationStartParameterAccessor.Factory>()
|
get() = variantImplementationFactory<ProjectIsolationStartParameterAccessor.Factory>()
|
||||||
.getInstance(gradle)
|
.getInstance(this)
|
||||||
.isProjectIsolationEnabled
|
.isProjectIsolationEnabled
|
||||||
|
|||||||
+2
-2
@@ -5,14 +5,14 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.plugin.internal
|
package org.jetbrains.kotlin.gradle.plugin.internal
|
||||||
|
|
||||||
import org.gradle.api.invocation.Gradle
|
import org.gradle.api.Project
|
||||||
|
|
||||||
internal class ProjectIsolationStartParameterAccessorG70() : ProjectIsolationStartParameterAccessor {
|
internal class ProjectIsolationStartParameterAccessorG70() : ProjectIsolationStartParameterAccessor {
|
||||||
override val isProjectIsolationEnabled: Boolean
|
override val isProjectIsolationEnabled: Boolean
|
||||||
get() = false
|
get() = false
|
||||||
|
|
||||||
internal class Factory : ProjectIsolationStartParameterAccessor.Factory {
|
internal class Factory : ProjectIsolationStartParameterAccessor.Factory {
|
||||||
override fun getInstance(gradle: Gradle): ProjectIsolationStartParameterAccessor {
|
override fun getInstance(project: Project): ProjectIsolationStartParameterAccessor {
|
||||||
return ProjectIsolationStartParameterAccessorG70()
|
return ProjectIsolationStartParameterAccessorG70()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-2
@@ -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,8 +17,8 @@ internal class ProjectIsolationStartParameterAccessorG71(
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal class Factory : ProjectIsolationStartParameterAccessor.Factory {
|
internal class Factory : ProjectIsolationStartParameterAccessor.Factory {
|
||||||
override fun getInstance(gradle: Gradle): ProjectIsolationStartParameterAccessor {
|
override fun getInstance(project: Project): ProjectIsolationStartParameterAccessor {
|
||||||
return ProjectIsolationStartParameterAccessorG71(gradle)
|
return ProjectIsolationStartParameterAccessorG71(project.gradle)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-2
@@ -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,8 +17,8 @@ internal class ProjectIsolationStartParameterAccessorG74(
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal class Factory : ProjectIsolationStartParameterAccessor.Factory {
|
internal class Factory : ProjectIsolationStartParameterAccessor.Factory {
|
||||||
override fun getInstance(gradle: Gradle): ProjectIsolationStartParameterAccessor {
|
override fun getInstance(project: Project): ProjectIsolationStartParameterAccessor {
|
||||||
return ProjectIsolationStartParameterAccessorG74(gradle)
|
return ProjectIsolationStartParameterAccessorG74(project.gradle)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-2
@@ -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,8 +17,8 @@ internal class ProjectIsolationStartParameterAccessorG75(
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal class Factory : ProjectIsolationStartParameterAccessor.Factory {
|
internal class Factory : ProjectIsolationStartParameterAccessor.Factory {
|
||||||
override fun getInstance(gradle: Gradle): ProjectIsolationStartParameterAccessor {
|
override fun getInstance(project: Project): ProjectIsolationStartParameterAccessor {
|
||||||
return ProjectIsolationStartParameterAccessorG75(gradle)
|
return ProjectIsolationStartParameterAccessorG75(project.gradle)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-2
@@ -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,8 +17,8 @@ internal class ProjectIsolationStartParameterAccessorG76(
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal class Factory : ProjectIsolationStartParameterAccessor.Factory {
|
internal class Factory : ProjectIsolationStartParameterAccessor.Factory {
|
||||||
override fun getInstance(gradle: Gradle): ProjectIsolationStartParameterAccessor {
|
override fun getInstance(project: Project): ProjectIsolationStartParameterAccessor {
|
||||||
return ProjectIsolationStartParameterAccessorG76(gradle)
|
return ProjectIsolationStartParameterAccessorG76(project.gradle)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
@@ -138,4 +138,6 @@ private fun Project.registerVariantImplementations() {
|
|||||||
CompatibilityConventionRegistrarG80.Factory()
|
CompatibilityConventionRegistrarG80.Factory()
|
||||||
factories[ConfigurationCacheStartParameterAccessor.Factory::class] =
|
factories[ConfigurationCacheStartParameterAccessor.Factory::class] =
|
||||||
ConfigurationCacheStartParameterAccessorG80.Factory()
|
ConfigurationCacheStartParameterAccessorG80.Factory()
|
||||||
|
factories[ProjectIsolationStartParameterAccessor.Factory::class] =
|
||||||
|
ProjectIsolationStartParameterAccessorG80.Factory()
|
||||||
}
|
}
|
||||||
|
|||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* 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.internal.StartParameterInternal
|
||||||
|
import org.gradle.api.invocation.Gradle
|
||||||
|
|
||||||
|
internal class ProjectIsolationStartParameterAccessorG80(
|
||||||
|
private val gradle: Gradle
|
||||||
|
) : ProjectIsolationStartParameterAccessor {
|
||||||
|
override val isProjectIsolationEnabled: Boolean by lazy {
|
||||||
|
(gradle.startParameter as StartParameterInternal).isolatedProjects.get()
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class Factory : ProjectIsolationStartParameterAccessor.Factory {
|
||||||
|
override fun getInstance(project: Project): ProjectIsolationStartParameterAccessor {
|
||||||
|
return ProjectIsolationStartParameterAccessorG80(project.gradle)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
@@ -138,4 +138,6 @@ private fun Project.registerVariantImplementations() {
|
|||||||
CompatibilityConventionRegistrarG81.Factory()
|
CompatibilityConventionRegistrarG81.Factory()
|
||||||
factories[ConfigurationCacheStartParameterAccessor.Factory::class] =
|
factories[ConfigurationCacheStartParameterAccessor.Factory::class] =
|
||||||
ConfigurationCacheStartParameterAccessorG81.Factory()
|
ConfigurationCacheStartParameterAccessorG81.Factory()
|
||||||
|
factories[ProjectIsolationStartParameterAccessor.Factory::class] =
|
||||||
|
ProjectIsolationStartParameterAccessorG81.Factory()
|
||||||
}
|
}
|
||||||
|
|||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* 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.internal.StartParameterInternal
|
||||||
|
import org.gradle.api.invocation.Gradle
|
||||||
|
|
||||||
|
internal class ProjectIsolationStartParameterAccessorG81(
|
||||||
|
private val gradle: Gradle
|
||||||
|
) : ProjectIsolationStartParameterAccessor {
|
||||||
|
override val isProjectIsolationEnabled: Boolean by lazy {
|
||||||
|
(gradle.startParameter as StartParameterInternal).isolatedProjects.get()
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class Factory : ProjectIsolationStartParameterAccessor.Factory {
|
||||||
|
override fun getInstance(project: Project): ProjectIsolationStartParameterAccessor {
|
||||||
|
return ProjectIsolationStartParameterAccessorG81(project.gradle)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+4
@@ -13,6 +13,8 @@ import org.gradle.api.file.SourceDirectorySet
|
|||||||
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.ConfigurationCacheStartParameterAccessor
|
||||||
import org.jetbrains.kotlin.gradle.plugin.internal.ConfigurationCacheStartParameterAccessorG82
|
import org.jetbrains.kotlin.gradle.plugin.internal.ConfigurationCacheStartParameterAccessorG82
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.internal.ProjectIsolationStartParameterAccessor
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.internal.ProjectIsolationStartParameterAccessorG82
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
private const val PLUGIN_VARIANT_NAME = "gradle82"
|
private const val PLUGIN_VARIANT_NAME = "gradle82"
|
||||||
@@ -137,4 +139,6 @@ private fun Project.registerVariantImplementations() {
|
|||||||
val factories = VariantImplementationFactoriesConfigurator.get(gradle)
|
val factories = VariantImplementationFactoriesConfigurator.get(gradle)
|
||||||
factories[ConfigurationCacheStartParameterAccessor.Factory::class] =
|
factories[ConfigurationCacheStartParameterAccessor.Factory::class] =
|
||||||
ConfigurationCacheStartParameterAccessorG82.Factory()
|
ConfigurationCacheStartParameterAccessorG82.Factory()
|
||||||
|
factories[ProjectIsolationStartParameterAccessor.Factory::class] =
|
||||||
|
ProjectIsolationStartParameterAccessorG82.Factory()
|
||||||
}
|
}
|
||||||
|
|||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* 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.internal.StartParameterInternal
|
||||||
|
import org.gradle.api.invocation.Gradle
|
||||||
|
|
||||||
|
internal class ProjectIsolationStartParameterAccessorG82(
|
||||||
|
private val gradle: Gradle
|
||||||
|
) : ProjectIsolationStartParameterAccessor {
|
||||||
|
override val isProjectIsolationEnabled: Boolean by lazy {
|
||||||
|
(gradle.startParameter as StartParameterInternal).isolatedProjects.get()
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class Factory : ProjectIsolationStartParameterAccessor.Factory {
|
||||||
|
override fun getInstance(project: Project): ProjectIsolationStartParameterAccessor {
|
||||||
|
return ProjectIsolationStartParameterAccessorG82(project.gradle)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
-2
@@ -5,14 +5,14 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.plugin.internal
|
package org.jetbrains.kotlin.gradle.plugin.internal
|
||||||
|
|
||||||
import org.gradle.api.invocation.Gradle
|
import org.gradle.api.Project
|
||||||
|
|
||||||
internal class ProjectIsolationStartParameterAccessorG6() : ProjectIsolationStartParameterAccessor {
|
internal class ProjectIsolationStartParameterAccessorG6() : ProjectIsolationStartParameterAccessor {
|
||||||
override val isProjectIsolationEnabled: Boolean
|
override val isProjectIsolationEnabled: Boolean
|
||||||
get() = false
|
get() = false
|
||||||
|
|
||||||
internal class Factory : ProjectIsolationStartParameterAccessor.Factory {
|
internal class Factory : ProjectIsolationStartParameterAccessor.Factory {
|
||||||
override fun getInstance(gradle: Gradle): ProjectIsolationStartParameterAccessor {
|
override fun getInstance(project: Project): ProjectIsolationStartParameterAccessor {
|
||||||
return ProjectIsolationStartParameterAccessorG6()
|
return ProjectIsolationStartParameterAccessorG6()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user