From 7673434ccd869ca842bf91028142cd82c6aad7cd Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Fri, 10 Nov 2023 13:12:26 +0100 Subject: [PATCH] [Gradle] Keep "-publishable" configurations as dependencyScope As they would clash with the ones that is intended to be consumed as project dependencies. It will not be compatible with future Gradle versions. This should be fixed with KT-49919 ^KT-60879 --- .../plugin/mpp/KotlinTargetSoftwareComponentImpl.kt | 9 +++++---- .../plugin/mpp/external/createExternalKotlinTarget.kt | 10 +++++++--- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinTargetSoftwareComponentImpl.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinTargetSoftwareComponentImpl.kt index 3175af2936d..a279863bdf5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinTargetSoftwareComponentImpl.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinTargetSoftwareComponentImpl.kt @@ -17,6 +17,8 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle import org.jetbrains.kotlin.gradle.plugin.KotlinTargetComponent import org.jetbrains.kotlin.gradle.plugin.launchInStage import org.jetbrains.kotlin.gradle.utils.copyAttributes +import org.jetbrains.kotlin.gradle.utils.createDependencyScope +import org.jetbrains.kotlin.gradle.utils.findDependencyScope import org.jetbrains.kotlin.tooling.core.UnsafeApi internal fun KotlinTargetSoftwareComponent( @@ -32,10 +34,9 @@ internal fun KotlinTargetSoftwareComponent( /* Explicitly typing 'Project' to avoid smart cast from 'target.project as ProjectInternal' */ val project: Project = target.project val publishedConfigurationName = publishedConfigurationName(kotlinUsageContext.name) - val configuration = project.configurations.findByName(publishedConfigurationName) - ?: project.configurations.create(publishedConfigurationName).also { publishedConfiguration -> - publishedConfiguration.isCanBeConsumed = false - publishedConfiguration.isCanBeResolved = false + val configuration = project.configurations.findDependencyScope(publishedConfigurationName) + ?: project.configurations.createDependencyScope(publishedConfigurationName).also { publishedConfiguration -> + publishedConfiguration.isVisible = false publishedConfiguration.extendsFrom(project.configurations.getByName(kotlinUsageContext.dependencyConfigurationName)) publishedConfiguration.artifacts.addAll(kotlinUsageContext.artifacts) copyAttributes(from = kotlinUsageContext.attributes, to = publishedConfiguration.attributes) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/createExternalKotlinTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/createExternalKotlinTarget.kt index 475b20fefd0..f4fdf76fe52 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/createExternalKotlinTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/createExternalKotlinTarget.kt @@ -46,14 +46,18 @@ fun KotlinMultiplatformExtension.createExter val sourcesElementsConfiguration = project.configurations .maybeCreateConsumable(lowerCamelCaseName(descriptor.targetName, "sourcesElements")) + fun Configuration.notVisible() = apply { isVisible = false } val apiElementsPublishedConfiguration = project.configurations - .maybeCreateConsumable(lowerCamelCaseName(descriptor.targetName, "apiElements-published")) + .maybeCreateDependencyScope(lowerCamelCaseName(descriptor.targetName, "apiElements-published")) + .notVisible() val runtimeElementsPublishedConfiguration = project.configurations - .maybeCreateConsumable(lowerCamelCaseName(descriptor.targetName, "runtimeElements-published")) + .maybeCreateDependencyScope(lowerCamelCaseName(descriptor.targetName, "runtimeElements-published")) + .notVisible() val sourcesElementsPublishedConfiguration = project.configurations - .maybeCreateConsumable(lowerCamelCaseName(descriptor.targetName, "sourcesElements-published")) + .maybeCreateDependencyScope(lowerCamelCaseName(descriptor.targetName, "sourcesElements-published")) + .notVisible() val kotlinTargetComponent = ExternalKotlinTargetComponent( ExternalKotlinTargetComponent.TargetProvider.byTargetName(this, descriptor.targetName)