diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt index 8ed8a4f4e28..d9876bd8b6d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt @@ -201,16 +201,13 @@ abstract class AbstractKotlinTargetConfigurator } } - project.whenEvaluated { - if (target.internal.isSourcesPublishable) { - configurations.maybeCreate(target.sourcesElementsConfigurationName).apply { - description = "Source files of main compilation of ${target.name}." - isVisible = false - isCanBeResolved = false - isCanBeConsumed = true - configureSourcesPublicationAttributes(target) - } - } + configurations.maybeCreate(target.sourcesElementsConfigurationName).apply { + description = "Source files of main compilation of ${target.name}." + isVisible = false + isCanBeResolved = false + isCanBeConsumed = true + configureSourcesPublicationAttributes(target) + project.whenEvaluated { isCanBeConsumed = target.internal.isSourcesPublishable } } if (createTestCompilation) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/MppPublicationTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/MppPublicationTest.kt index 6da8daee9b0..1e1ffb09922 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/MppPublicationTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/MppPublicationTest.kt @@ -202,14 +202,26 @@ class MppPublicationTest { } @Test - fun `test that no sourcesElements should be exposed when sources are not published`() { + fun `test that no sourcesElements should be consumable when sources are published`() { + kotlin.linuxX64("linux") + kotlin.withSourcesJar(publish = true) + + project.evaluate() + kotlin.targets.forEach { + val sourcesElements = project.configurations.getByName(it.sourcesElementsConfigurationName) + if (!sourcesElements.isCanBeConsumed) fail("Configuration '${it.sourcesElementsConfigurationName}' should be consumable") + } + } + + @Test + fun `test that no sourcesElements should be consumable when sources are not published`() { kotlin.linuxX64("linux") kotlin.withSourcesJar(publish = false) project.evaluate() kotlin.targets.forEach { - if (it.sourcesElementsConfigurationName in project.configurations.names) - fail("Configuration '${it.sourcesElementsConfigurationName}' should not be created") + val sourcesElements = project.configurations.getByName(it.sourcesElementsConfigurationName) + if (sourcesElements.isCanBeConsumed) fail("Configuration '${it.sourcesElementsConfigurationName}' should not be consumable") } }