[Gradle] MppDependencyProjectStructureMetadataExtractorFactory: Cache on rootProject...

Because composite builds might have isolated classloaders,
therefore caching the MppDependencyProjectStructureMetadataExtractorFactory
on a compositeBuildRoot will lead to ClassCastExceptions

^KT-56712 Verification Pending
This commit is contained in:
Sebastian Sellmair
2023-02-16 10:21:55 +01:00
committed by Space Team
parent 70a44ccc67
commit b83a490034
@@ -11,7 +11,6 @@ import org.gradle.api.artifacts.result.ResolvedArtifactResult
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
import org.jetbrains.kotlin.gradle.plugin.extraProperties
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toSingleKpmModuleIdentifier
import org.jetbrains.kotlin.gradle.utils.compositeBuildRootProject
import org.jetbrains.kotlin.gradle.utils.getOrPut
internal val Project.kotlinMppDependencyProjectStructureMetadataExtractorFactory: MppDependencyProjectStructureMetadataExtractorFactory
@@ -58,7 +57,7 @@ private constructor(
companion object {
private val extensionName = MppDependencyProjectStructureMetadataExtractorFactory::class.java.simpleName
fun getOrCreate(project: Project): MppDependencyProjectStructureMetadataExtractorFactory =
project.compositeBuildRootProject.extraProperties.getOrPut(extensionName) {
project.rootProject.extraProperties.getOrPut(extensionName) {
MppDependencyProjectStructureMetadataExtractorFactory(
lazy { GlobalProjectStructureMetadataStorage.getProjectStructureMetadataProvidersFromAllGradleBuilds(project) },
collectAllProjectStructureMetadataInCurrentBuild(project)