[Gradle] Include kotlin-tooling-metadata in KPM module publication
KT-49704
This commit is contained in:
+2
@@ -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()
|
||||
|
||||
+11
-1
@@ -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
|
||||
) {
|
||||
|
||||
Reference in New Issue
Block a user