[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.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.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.KotlinPlatformType
|
||||
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.plugin.mpp.*
|
||||
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.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.testing.internal.KotlinTestReport
|
||||
import org.jetbrains.kotlin.gradle.testing.testTaskName
|
||||
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
|
||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||
import javax.inject.Inject
|
||||
|
||||
@@ -37,6 +41,53 @@ constructor(
|
||||
override lateinit var testRuns: NamedDomainObjectContainer<KotlinJsReportAggregatingTestRun>
|
||||
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
|
||||
|
||||
val testTaskName get() = testRuns.getByName(KotlinTargetWithTests.DEFAULT_TEST_RUN_NAME).testTaskName
|
||||
|
||||
Reference in New Issue
Block a user