[Gradle, JS] Api and runtime variants for legacy and ir
This commit is contained in:
+2
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSetFactory
|
import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSetFactory
|
||||||
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
|
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsPlugin
|
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsPlugin
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrPlugin
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrPlugin
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.npm.addNpmDependencyExtension
|
import org.jetbrains.kotlin.gradle.targets.js.npm.addNpmDependencyExtension
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KOTLIN_COMPILER_EMBEDDABLE
|
import org.jetbrains.kotlin.gradle.tasks.KOTLIN_COMPILER_EMBEDDABLE
|
||||||
@@ -102,6 +103,7 @@ abstract class KotlinBasePluginWrapper(
|
|||||||
private fun setupAttributeMatchingStrategy(project: Project) = with(project.dependencies.attributesSchema) {
|
private fun setupAttributeMatchingStrategy(project: Project) = with(project.dependencies.attributesSchema) {
|
||||||
KotlinPlatformType.setupAttributesMatchingStrategy(this)
|
KotlinPlatformType.setupAttributesMatchingStrategy(this)
|
||||||
KotlinUsages.setupAttributesMatchingStrategy(project, this)
|
KotlinUsages.setupAttributesMatchingStrategy(project, this)
|
||||||
|
KotlinJsTarget.setupAttributesMatchingStrategy(project.dependencies.attributesSchema)
|
||||||
ProjectLocalConfigurations.setupAttributesMatchingStrategy(this)
|
ProjectLocalConfigurations.setupAttributesMatchingStrategy(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -184,7 +184,8 @@ abstract class AbstractKotlinTarget(
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createUsageContexts(
|
// TODO[Ilya Goncharov] fix internal on public when we remove legacy js
|
||||||
|
internal fun createUsageContexts(
|
||||||
producingCompilation: KotlinCompilation<*>
|
producingCompilation: KotlinCompilation<*>
|
||||||
): Set<DefaultKotlinUsageContext> {
|
): Set<DefaultKotlinUsageContext> {
|
||||||
// Here, the Java Usage values are used intentionally as Gradle needs this for
|
// Here, the Java Usage values are used intentionally as Gradle needs this for
|
||||||
|
|||||||
+20
-37
@@ -7,16 +7,19 @@ 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.Attribute
|
import org.gradle.api.attributes.Attribute
|
||||||
import org.gradle.api.attributes.Usage
|
import org.gradle.api.attributes.AttributesSchema
|
||||||
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.KotlinMultiplatformExtension
|
||||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
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.mpp.*
|
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetComponent
|
||||||
|
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.PRIMARY_SINGLE_COMPONENT_NAME
|
||||||
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
|
||||||
@@ -26,7 +29,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.dashSeparatedName
|
||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@@ -46,46 +49,22 @@ constructor(
|
|||||||
if (irTarget == null)
|
if (irTarget == null)
|
||||||
super.kotlinComponents
|
super.kotlinComponents
|
||||||
else {
|
else {
|
||||||
val usageContexts = mutableSetOf<DefaultKotlinUsageContext>()
|
val mainCompilation = compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME)
|
||||||
|
val usageContexts = createUsageContexts(mainCompilation) +
|
||||||
// This usage value is only needed for Maven scope mapping. Don't replace it with a custom Kotlin Usage value
|
irTarget!!.createUsageContexts(irTarget!!.compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME))
|
||||||
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 =
|
val componentName =
|
||||||
if (project.kotlinExtension is KotlinMultiplatformExtension)
|
if (project.kotlinExtension is KotlinMultiplatformExtension)
|
||||||
targetName
|
targetName
|
||||||
else PRIMARY_SINGLE_COMPONENT_NAME
|
else PRIMARY_SINGLE_COMPONENT_NAME
|
||||||
|
|
||||||
val component =
|
val result = createKotlinVariant(componentName, mainCompilation, usageContexts)
|
||||||
createKotlinVariant(componentName, compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME), usageContexts)
|
|
||||||
|
|
||||||
val sourcesJarTask =
|
result.sourcesArtifacts = setOf(
|
||||||
sourcesJarTask(project, lazy { project.kotlinExtension.sourceSets.toSet() }, null, targetName.toLowerCase())
|
sourcesJarArtifact(mainCompilation, componentName, dashSeparatedName(targetName.toLowerCase()))
|
||||||
|
|
||||||
component.sourcesArtifacts = setOf(
|
|
||||||
project.artifacts.add(Dependency.ARCHIVES_CONFIGURATION, sourcesJarTask).apply {
|
|
||||||
this as ConfigurablePublishArtifact
|
|
||||||
classifier = "sources"
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
setOf(component)
|
setOf(result)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -178,5 +157,9 @@ constructor(
|
|||||||
|
|
||||||
const val LEGACY = "legacy"
|
const val LEGACY = "legacy"
|
||||||
const val IR = "ir"
|
const val IR = "ir"
|
||||||
|
|
||||||
|
fun setupAttributesMatchingStrategy(attributesSchema: AttributesSchema) {
|
||||||
|
attributesSchema.attribute(jsModeAttribute)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user