diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmMetadataBinaryDependencyResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmMetadataBinaryDependencyResolver.kt index 6b2bb53cc69..006169e8d79 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmMetadataBinaryDependencyResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmMetadataBinaryDependencyResolver.kt @@ -44,7 +44,7 @@ internal class IdeaKpmMetadataBinaryDependencyResolver( val sourceSetContent = artifactContent.findSourceSet(visibleFragmentName) ?: return@mapNotNull null val metadataBinary = sourceSetContent.metadataBinary ?: return@mapNotNull null - val libraryFile = fragment.project.layout.kotlinTransformedMetadataLibraryDirectoryForIde + val libraryFile = fragment.project.kotlinTransformedMetadataLibraryDirectoryForIde .resolve(metadataBinary.relativeFile) .apply { if (!isFile) metadataBinary.copyTo(this) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeTransformedMetadataDependencyResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeTransformedMetadataDependencyResolver.kt index 9b504b0215d..0ad00f3c199 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeTransformedMetadataDependencyResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeTransformedMetadataDependencyResolver.kt @@ -30,7 +30,7 @@ internal object IdeTransformedMetadataDependencyResolver : IdeDependencyResolver val sourceSetContent = artifactContent.findSourceSet(visibleSourceSet) ?: return@mapNotNull null val sourceSetMetadataBinary = sourceSetContent.metadataBinary ?: return@mapNotNull null - val metadataLibraryOutputFile = sourceSet.internal.project.layout.kotlinTransformedMetadataLibraryDirectoryForIde + val metadataLibraryOutputFile = sourceSet.internal.project.kotlinTransformedMetadataLibraryDirectoryForIde .resolve(sourceSetMetadataBinary.relativeFile) metadataLibraryOutputFile.parentFile.mkdirs() diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMetadataLibraryDirectories.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMetadataLibraryDirectories.kt index 44de109442b..ee8a0a83491 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMetadataLibraryDirectories.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMetadataLibraryDirectories.kt @@ -5,7 +5,9 @@ package org.jetbrains.kotlin.gradle.plugin.mpp +import org.gradle.api.Project import org.gradle.api.file.ProjectLayout +import org.jetbrains.kotlin.gradle.utils.compositeBuildRootProject import java.io.File private const val kotlinTransformedMetadataLibraries = "kotlinTransformedMetadataLibraries" @@ -14,11 +16,11 @@ private const val kotlinTransformedCInteropMetadataLibraries = "kotlinTransforme internal fun ProjectLayout.kotlinTransformedMetadataLibraryDirectoryForBuild(sourceSetName: String): File = buildDirectory.get().asFile.resolve(kotlinTransformedMetadataLibraries).resolve(sourceSetName) -internal val ProjectLayout.kotlinTransformedMetadataLibraryDirectoryForIde: File - get() = projectDirectory.asFile.resolve(".gradle").resolve("kotlin").resolve(kotlinTransformedMetadataLibraries) +internal val Project.kotlinTransformedMetadataLibraryDirectoryForIde: File + get() = compositeBuildRootProject.rootDir.resolve(".gradle").resolve("kotlin").resolve(kotlinTransformedMetadataLibraries) internal fun ProjectLayout.kotlinTransformedCInteropMetadataLibraryDirectoryForBuild(sourceSetName: String): File = buildDirectory.get().asFile.resolve(kotlinTransformedCInteropMetadataLibraries).resolve(sourceSetName) -internal val ProjectLayout.kotlinTransformedCInteropMetadataLibraryDirectoryForIde: File - get() = projectDirectory.asFile.resolve(".gradle").resolve("kotlin").resolve(kotlinTransformedCInteropMetadataLibraries) +internal val Project.kotlinTransformedCInteropMetadataLibraryDirectoryForIde: File + get() = compositeBuildRootProject.rootDir.resolve(".gradle").resolve("kotlin").resolve(kotlinTransformedCInteropMetadataLibraries) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinProjectStructureMetadata.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinProjectStructureMetadata.kt index 81450a678a2..10ace924f9c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinProjectStructureMetadata.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinProjectStructureMetadata.kt @@ -22,6 +22,7 @@ import org.jetbrains.kotlin.gradle.targets.metadata.dependsOnClosureWithInterCom import org.jetbrains.kotlin.gradle.targets.metadata.getPublishedPlatformCompilations import org.jetbrains.kotlin.gradle.targets.metadata.isNativeSourceSet import org.jetbrains.kotlin.gradle.targets.native.internal.CInteropCommonizerCompositeMetadataJarBundling.cinteropMetadataDirectoryPath +import org.jetbrains.kotlin.gradle.utils.compositeBuildRootProject import org.jetbrains.kotlin.gradle.utils.getOrPut import org.w3c.dom.Document import org.w3c.dom.Element @@ -415,14 +416,14 @@ internal object GlobalProjectStructureMetadataStorage { fun propertyName(buildName: String, projectPath: String) = "$propertyPrefix.$buildName.path.$projectPath" fun registerProjectStructureMetadata(project: Project, metadataProvider: () -> KotlinProjectStructureMetadata) { - project.compositeBuildRoot.extensions.extraProperties.set( + project.compositeBuildRootProject.extensions.extraProperties.set( propertyName(project.rootProject.name, project.path), { metadataProvider().toJson() } ) } fun getProjectStructureMetadataProvidersFromAllGradleBuilds(project: Project): Map> { - return project.compositeBuildRoot.extensions.extraProperties.properties + return project.compositeBuildRootProject.extensions.extraProperties.properties .filterKeys { it.startsWith(propertyPrefix) } .entries .associate { (propertyName, propertyValue) -> @@ -433,8 +434,6 @@ internal object GlobalProjectStructureMetadataStorage { } } - private val Project.compositeBuildRoot: Project get() = generateSequence(project.gradle) { it.parent }.last().rootProject - private fun Any.getProjectStructureMetadataOrNull(): KotlinProjectStructureMetadata? { val jsonStringProvider = this as? Function0<*> ?: return null val jsonString = jsonStringProvider.invoke() as? String ?: return null diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/transformMetadataLibraries.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/transformMetadataLibraries.kt index 5452fcc387b..4d77ca2070a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/transformMetadataLibraries.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/transformMetadataLibraries.kt @@ -27,7 +27,7 @@ internal fun Project.transformMetadataLibrariesForIde( } is ArtifactMetadataProvider -> transformMetadataLibrariesForIde( - layout.kotlinTransformedMetadataLibraryDirectoryForIde, resolution, metadataProvider + kotlinTransformedMetadataLibraryDirectoryForIde, resolution, metadataProvider ) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt index 9666d113f76..cc05064c50b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropMetadataDependencyTransformationTask.kt @@ -79,7 +79,7 @@ internal fun Project.locateOrRegisterCInteropMetadataDependencyTransformationTas args = listOf( sourceSet, /* outputDirectory = */ - project.layout.kotlinTransformedCInteropMetadataLibraryDirectoryForIde, + project.kotlinTransformedCInteropMetadataLibraryDirectoryForIde, /* cleaning = */ CInteropMetadataDependencyTransformationTask.Cleaning.None ), diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/gradleUtils.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/gradleUtils.kt index 1dd09cb56d7..3ea066cc2c0 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/gradleUtils.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/gradleUtils.kt @@ -5,7 +5,10 @@ package org.jetbrains.kotlin.gradle.utils +import org.gradle.api.Project import org.gradle.api.invocation.Gradle val Gradle.projectCacheDir - get() = startParameter.projectCacheDir ?: this.rootProject.projectDir.resolve(".gradle") \ No newline at end of file + get() = startParameter.projectCacheDir ?: this.rootProject.projectDir.resolve(".gradle") + +internal val Project.compositeBuildRootProject: Project get() = generateSequence(project.gradle) { it.parent }.last().rootProject