[Gradle, JS] Publish with 2 variants
This commit is contained in:
+55
-4
@@ -7,12 +7,15 @@ package org.jetbrains.kotlin.gradle.targets.js
|
|||||||
|
|
||||||
import org.gradle.api.NamedDomainObjectContainer
|
import org.gradle.api.NamedDomainObjectContainer
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.artifacts.ConfigurablePublishArtifact
|
||||||
|
import org.gradle.api.artifacts.Dependency
|
||||||
|
import org.gradle.api.attributes.Usage
|
||||||
import org.gradle.api.tasks.TaskProvider
|
import org.gradle.api.tasks.TaskProvider
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator.Companion.runTaskNameSuffix
|
import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator.Companion.runTaskNameSuffix
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetWithTests
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget
|
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBrowserDsl
|
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBrowserDsl
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsNodeDsl
|
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsNodeDsl
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl
|
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl
|
||||||
@@ -22,6 +25,7 @@ import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinNodeJs
|
|||||||
import org.jetbrains.kotlin.gradle.tasks.locateTask
|
import org.jetbrains.kotlin.gradle.tasks.locateTask
|
||||||
import org.jetbrains.kotlin.gradle.testing.internal.KotlinTestReport
|
import org.jetbrains.kotlin.gradle.testing.internal.KotlinTestReport
|
||||||
import org.jetbrains.kotlin.gradle.testing.testTaskName
|
import org.jetbrains.kotlin.gradle.testing.testTaskName
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
|
||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@@ -37,6 +41,53 @@ constructor(
|
|||||||
override lateinit var testRuns: NamedDomainObjectContainer<KotlinJsReportAggregatingTestRun>
|
override lateinit var testRuns: NamedDomainObjectContainer<KotlinJsReportAggregatingTestRun>
|
||||||
internal set
|
internal set
|
||||||
|
|
||||||
|
override val kotlinComponents: Set<KotlinTargetComponent> by lazy {
|
||||||
|
if (irTarget == null)
|
||||||
|
super.kotlinComponents
|
||||||
|
else {
|
||||||
|
val usageContexts = mutableSetOf<DefaultKotlinUsageContext>()
|
||||||
|
|
||||||
|
// This usage value is only needed for Maven scope mapping. Don't replace it with a custom Kotlin Usage value
|
||||||
|
val javaApiUsage = project.usageByName(if (isGradleVersionAtLeast(5, 3)) "java-api-jars" else Usage.JAVA_API)
|
||||||
|
|
||||||
|
usageContexts += run {
|
||||||
|
DefaultKotlinUsageContext(
|
||||||
|
compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME),
|
||||||
|
javaApiUsage,
|
||||||
|
apiElementsConfigurationName
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
usageContexts += run {
|
||||||
|
DefaultKotlinUsageContext(
|
||||||
|
irTarget!!.compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME),
|
||||||
|
javaApiUsage,
|
||||||
|
irTarget!!.apiElementsConfigurationName
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
val componentName =
|
||||||
|
if (project.kotlinExtension is KotlinMultiplatformExtension)
|
||||||
|
targetName
|
||||||
|
else PRIMARY_SINGLE_COMPONENT_NAME
|
||||||
|
|
||||||
|
val component =
|
||||||
|
createKotlinVariant(componentName, compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME), usageContexts)
|
||||||
|
|
||||||
|
val sourcesJarTask =
|
||||||
|
sourcesJarTask(project, lazy { project.kotlinExtension.sourceSets.toSet() }, null, targetName.toLowerCase())
|
||||||
|
|
||||||
|
component.sourcesArtifacts = setOf(
|
||||||
|
project.artifacts.add(Dependency.ARCHIVES_CONFIGURATION, sourcesJarTask).apply {
|
||||||
|
this as ConfigurablePublishArtifact
|
||||||
|
classifier = "sources"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
setOf(component)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var irTarget: KotlinJsIrTarget? = null
|
var irTarget: KotlinJsIrTarget? = null
|
||||||
|
|
||||||
val testTaskName get() = testRuns.getByName(KotlinTargetWithTests.DEFAULT_TEST_RUN_NAME).testTaskName
|
val testTaskName get() = testRuns.getByName(KotlinTargetWithTests.DEFAULT_TEST_RUN_NAME).testTaskName
|
||||||
|
|||||||
Reference in New Issue
Block a user