[Gradle] Don't detect multiple plugin instances with project isolation enabled

#KT-55164 In Progress
#KT-52625 In Progress
This commit is contained in:
Alexander Likhachev
2023-01-03 19:42:43 +01:00
committed by Space Team
parent 08c8d3ec03
commit 61cac14ed7
2 changed files with 12 additions and 2 deletions
@@ -51,10 +51,10 @@ import org.jetbrains.kotlin.gradle.targets.native.internal.CInteropKlibLibraryEl
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompileTool
import org.jetbrains.kotlin.gradle.testing.internal.KotlinTestsRegistry
import org.jetbrains.kotlin.gradle.tooling.registerBuildKotlinToolingMetadataTask
import org.jetbrains.kotlin.gradle.utils.*
import org.jetbrains.kotlin.gradle.utils.addGradlePluginMetadataAttributes
import org.jetbrains.kotlin.gradle.utils.checkGradleCompatibility
import org.jetbrains.kotlin.gradle.utils.getOrPut
import org.jetbrains.kotlin.gradle.utils.loadPropertyFromResources
import org.jetbrains.kotlin.gradle.utils.runProjectConfigurationHealthCheck
import org.jetbrains.kotlin.statistics.metrics.StringMetrics
import org.jetbrains.kotlin.tooling.core.KotlinToolingVersion
@@ -92,7 +92,10 @@ abstract class DefaultKotlinBasePlugin : KotlinBasePlugin {
addGradlePluginMetadataAttributes(project)
}
KotlinGradleBuildServices.registerIfAbsent(project.gradle).get().detectKotlinPluginLoadedInMultipleProjects(project, kotlinPluginVersion)
val kotlinGradleBuildServices = KotlinGradleBuildServices.registerIfAbsent(project.gradle).get()
if (!isProjectIsolationEnabled(project.gradle)) {
kotlinGradleBuildServices.detectKotlinPluginLoadedInMultipleProjects(project, kotlinPluginVersion)
}
BuildMetricsService.registerIfAbsent(project)?.also { buildMetricsService ->
val buildEventsListenerRegistryHolder = BuildEventsListenerRegistryHolder.getInstance(project)
@@ -13,6 +13,13 @@ import org.gradle.api.provider.Provider
import org.jetbrains.kotlin.gradle.plugin.internal.configurationTimePropertiesAccessor
import org.jetbrains.kotlin.gradle.plugin.internal.usedAtConfigurationTime
internal fun isProjectIsolationEnabled(gradle: Gradle) =
try {
(gradle.startParameter as? StartParameterInternal)?.isolatedProjects?.get()
} catch (_: IncompatibleClassChangeError) {
null
} ?: false
internal fun isConfigurationCacheAvailable(gradle: Gradle) =
try {
val startParameters = gradle.startParameter