diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinToolingMetadataIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinToolingMetadataIT.kt index 53f54490b71..64ae2e2dcc2 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinToolingMetadataIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinToolingMetadataIT.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.gradle.tooling.BuildKotlinToolingMetadataTask import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.tooling.KotlinToolingMetadata import org.jetbrains.kotlin.tooling.parseJsonOrThrow +import org.junit.Assume.assumeFalse import org.junit.Test import kotlin.test.assertEquals @@ -91,6 +92,7 @@ class KotlinToolingMetadataMppIT : BaseGradleIT() { @Test fun `kotlin-js-browser-project`() = with(transformProjectWithPluginsDsl("kotlin-js-browser-project")) { + assumeFalse("KPM model mapping is not yet supported in single-platform projects", isKpmModelMappingEnabled) projectDir.resolve("gradle.properties").appendText("\nkotlin.mpp.enableKotlinToolingMetadataArtifact=true") build(BuildKotlinToolingMetadataTask.defaultTaskName) { assertSuccessful() diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/ModulePublishing.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/ModulePublishing.kt index effef09fafe..bb17bf5eec8 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/ModulePublishing.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/ModulePublishing.kt @@ -9,7 +9,7 @@ import org.gradle.api.Project import org.gradle.api.component.SoftwareComponentFactory import org.gradle.api.publish.PublishingExtension import org.gradle.api.publish.maven.MavenPublication -import org.jetbrains.kotlin.gradle.dsl.pm20Extension +import org.jetbrains.kotlin.gradle.tooling.buildKotlinToolingMetadataTask import javax.inject.Inject internal fun setupKpmModulesPublication(project: Project) { @@ -44,11 +44,21 @@ internal fun setupPublicationForModule(module: KotlinGradleModule) { it.fromResolutionOf(metadataDependencyConfiguration) } } + publication.setupKotlinToolingMetadataIfNeeded(project) } } } } +private fun MavenPublication.setupKotlinToolingMetadataIfNeeded(project: Project) { + val buildKotlinToolingMetadataTask = project.buildKotlinToolingMetadataTask ?: return + + artifact(buildKotlinToolingMetadataTask.map { it.outputFile }) { artifact -> + artifact.classifier = "kotlin-tooling-metadata" + artifact.builtBy(buildKotlinToolingMetadataTask) + } +} + private open class SoftwareComponentFactoryHolder @Inject constructor( @Inject val softwareComponentFactory: SoftwareComponentFactory ) {