diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractKotlinTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractKotlinTarget.kt index b38fefc2ba8..14819da03d4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractKotlinTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractKotlinTarget.kt @@ -142,6 +142,7 @@ abstract class AbstractKotlinTarget( classifierPrefix: String? = null, sourcesElementsConfigurationName: String = this.sourcesElementsConfigurationName, overrideConfigurationAttributes: AttributeContainer? = null, + mavenScope: KotlinUsageContext.MavenScope? = null, ): DefaultKotlinUsageContext? { // We want to create task anyway, even if sources are not going to be published by KGP // So users or other plugins can still use it @@ -160,6 +161,7 @@ abstract class AbstractKotlinTarget( compilation = producingCompilation, dependencyConfigurationName = sourcesElementsConfigurationName, overrideConfigurationAttributes = overrideConfigurationAttributes, + mavenScope = mavenScope, includeIntoProjectStructureMetadata = false, publishOnlyIf = { isSourcesPublishable } ) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt index af773943107..4b75416c679 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt @@ -86,7 +86,8 @@ constructor( createSourcesJarAndUsageContextIfPublishable( mainCompilation, componentName, - dashSeparatedName(targetName.toLowerCaseAsciiOnly()) + dashSeparatedName(targetName.toLowerCaseAsciiOnly()), + mavenScope = KotlinUsageContext.MavenScope.RUNTIME ) ) 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 b95a162a796..2fb46f51473 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 @@ -21,6 +21,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension import org.jetbrains.kotlin.gradle.plugin.mpp.internal import org.jetbrains.kotlin.gradle.util.addBuildEventsListenerRegistryMock import org.jetbrains.kotlin.gradle.util.disableLegacyWarning +import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly import kotlin.test.* class MppPublicationTest { @@ -128,6 +129,16 @@ class MppPublicationTest { } } + @Test + fun `sources elements should not have any dependencies`() { + project.evaluate() + project.configurations + .filter { it.name.toLowerCaseAsciiOnly().contains("sourceselements") } + .forEach { configuration -> + if (configuration.dependencies.isNotEmpty()) fail("Configuration $configuration should not have dependencies") + } + } + @Test fun `sourcesJar task should be available during configuration time`() {