[Gradle] registerProjectStructureMetadata in afterEvaluate
To prevent issues with Configuration Cache and Precompiled Script Plugins ^KT-59042 Verification Pending
This commit is contained in:
committed by
Space Team
parent
37d797577b
commit
64f0e1e742
+10
-2
@@ -11,6 +11,7 @@ import org.gradle.api.plugins.JavaBasePlugin
|
||||
import org.jetbrains.kotlin.gradle.dsl.*
|
||||
import org.jetbrains.kotlin.gradle.internal.customizeKotlinDependencies
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle.Stage.AfterEvaluateBuildscript
|
||||
import org.jetbrains.kotlin.gradle.plugin.hierarchy.orNull
|
||||
import org.jetbrains.kotlin.gradle.plugin.hierarchy.setupDefaultKotlinHierarchy
|
||||
import org.jetbrains.kotlin.gradle.plugin.ide.kotlinIdeMultiplatformImport
|
||||
@@ -81,8 +82,15 @@ class KotlinMultiplatformPlugin : Plugin<Project> {
|
||||
private fun exportProjectStructureMetadataForOtherBuilds(
|
||||
extension: KotlinMultiplatformExtension,
|
||||
) {
|
||||
GlobalProjectStructureMetadataStorage.registerProjectStructureMetadata(extension.project) {
|
||||
extension.kotlinProjectStructureMetadata
|
||||
// Run in AfterEvaluate stage to avoid issues with Precompiled Script Plugins
|
||||
// When Gradle runs `:generatePrecompiledScriptPluginAccessors` it creates dummy project and
|
||||
// applies plugins from *.gradle.kts file to and generates accessors from it.
|
||||
// These dummy projects never gets evaluated and should not expose any Project Structure Metadata.
|
||||
// Putting registerProjectStructureMetadata in AfterEvaluate stage prevents PSM registration in dummy projects.
|
||||
extension.project.launchInStage(AfterEvaluateBuildscript) {
|
||||
GlobalProjectStructureMetadataStorage.registerProjectStructureMetadata(extension.project) {
|
||||
extension.kotlinProjectStructureMetadata
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user