[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.konan.target.KonanTarget
|
||||||
import org.jetbrains.kotlin.tooling.KotlinToolingMetadata
|
import org.jetbrains.kotlin.tooling.KotlinToolingMetadata
|
||||||
import org.jetbrains.kotlin.tooling.parseJsonOrThrow
|
import org.jetbrains.kotlin.tooling.parseJsonOrThrow
|
||||||
|
import org.junit.Assume.assumeFalse
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
|
|
||||||
@@ -91,6 +92,7 @@ class KotlinToolingMetadataMppIT : BaseGradleIT() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `kotlin-js-browser-project`() = with(transformProjectWithPluginsDsl("kotlin-js-browser-project")) {
|
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")
|
projectDir.resolve("gradle.properties").appendText("\nkotlin.mpp.enableKotlinToolingMetadataArtifact=true")
|
||||||
build(BuildKotlinToolingMetadataTask.defaultTaskName) {
|
build(BuildKotlinToolingMetadataTask.defaultTaskName) {
|
||||||
assertSuccessful()
|
assertSuccessful()
|
||||||
|
|||||||
+11
-1
@@ -9,7 +9,7 @@ import org.gradle.api.Project
|
|||||||
import org.gradle.api.component.SoftwareComponentFactory
|
import org.gradle.api.component.SoftwareComponentFactory
|
||||||
import org.gradle.api.publish.PublishingExtension
|
import org.gradle.api.publish.PublishingExtension
|
||||||
import org.gradle.api.publish.maven.MavenPublication
|
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
|
import javax.inject.Inject
|
||||||
|
|
||||||
internal fun setupKpmModulesPublication(project: Project) {
|
internal fun setupKpmModulesPublication(project: Project) {
|
||||||
@@ -44,11 +44,21 @@ internal fun setupPublicationForModule(module: KotlinGradleModule) {
|
|||||||
it.fromResolutionOf(metadataDependencyConfiguration)
|
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(
|
private open class SoftwareComponentFactoryHolder @Inject constructor(
|
||||||
@Inject val softwareComponentFactory: SoftwareComponentFactory
|
@Inject val softwareComponentFactory: SoftwareComponentFactory
|
||||||
) {
|
) {
|
||||||
|
|||||||
Reference in New Issue
Block a user