[Gradle] Getting a root project of root gradle after project loading
#KT-59863 Fixed
This commit is contained in:
committed by
Space Team
parent
e5f9eb5b24
commit
0e6930e7ef
+7
-5
@@ -10,11 +10,11 @@ import com.google.gson.JsonObject
|
||||
import com.google.gson.JsonParser
|
||||
import com.google.gson.stream.JsonWriter
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.plugins.ExtensionAware
|
||||
import org.gradle.api.tasks.Input
|
||||
import org.gradle.api.tasks.Internal
|
||||
import org.gradle.api.tasks.Nested
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.currentBuildId
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope
|
||||
@@ -419,10 +419,12 @@ internal object GlobalProjectStructureMetadataStorage {
|
||||
fun propertyName(buildName: String, projectPath: String) = "$propertyPrefix.$buildName.path.$projectPath"
|
||||
|
||||
fun registerProjectStructureMetadata(project: Project, metadataProvider: () -> KotlinProjectStructureMetadata) {
|
||||
project.compositeBuildRootProject.extensions.extraProperties.set(
|
||||
propertyName(project.currentBuildId().name, project.path),
|
||||
{ metadataProvider().toJson() }
|
||||
)
|
||||
project.compositeBuildRootProject {
|
||||
(it as ExtensionAware).extensions.extraProperties.set(
|
||||
propertyName(project.currentBuildId().name, project.path),
|
||||
{ metadataProvider().toJson() }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun getProjectStructureMetadataProvidersFromAllGradleBuilds(project: Project): Map<ProjectPathWithBuildName, Lazy<KotlinProjectStructureMetadata?>> {
|
||||
|
||||
+7
-1
@@ -17,7 +17,13 @@ import kotlin.reflect.KClass
|
||||
val Gradle.projectCacheDir
|
||||
get() = startParameter.projectCacheDir ?: this.rootProject.projectDir.resolve(".gradle")
|
||||
|
||||
internal val Project.compositeBuildRootProject: Project get() = generateSequence(project.gradle) { it.parent }.last().rootProject
|
||||
internal val Project.compositeBuildRootGradle: Gradle get() = generateSequence(project.gradle) { it.parent }.last()
|
||||
internal val Project.compositeBuildRootProject: Project get() = compositeBuildRootGradle.rootProject
|
||||
|
||||
/**
|
||||
* Run block function on root project of the root build in composite build only when a root project becomes available
|
||||
*/
|
||||
internal fun Project.compositeBuildRootProject(block: (Project) -> Unit) = compositeBuildRootGradle.rootProject(block)
|
||||
|
||||
internal fun <T : BuildService<P>, P : BuildServiceParameters> Gradle.registerClassLoaderScopedBuildService(
|
||||
serviceClass: KClass<T>,
|
||||
|
||||
Reference in New Issue
Block a user