[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.statistics.KotlinBuildStatsService
|
||||
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.npm.addNpmDependencyExtension
|
||||
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) {
|
||||
KotlinPlatformType.setupAttributesMatchingStrategy(this)
|
||||
KotlinUsages.setupAttributesMatchingStrategy(project, this)
|
||||
KotlinJsTarget.setupAttributesMatchingStrategy(project.dependencies.attributesSchema)
|
||||
ProjectLocalConfigurations.setupAttributesMatchingStrategy(this)
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -184,7 +184,8 @@ abstract class AbstractKotlinTarget(
|
||||
return result
|
||||
}
|
||||
|
||||
private fun createUsageContexts(
|
||||
// TODO[Ilya Goncharov] fix internal on public when we remove legacy js
|
||||
internal fun createUsageContexts(
|
||||
producingCompilation: KotlinCompilation<*>
|
||||
): Set<DefaultKotlinUsageContext> {
|
||||
// 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.Project
|
||||
import org.gradle.api.artifacts.ConfigurablePublishArtifact
|
||||
import org.gradle.api.artifacts.Dependency
|
||||
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.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.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.KotlinJsNodeDsl
|
||||
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.testing.internal.KotlinTestReport
|
||||
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 javax.inject.Inject
|
||||
|
||||
@@ -46,46 +49,22 @@ constructor(
|
||||
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 mainCompilation = compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME)
|
||||
val usageContexts = createUsageContexts(mainCompilation) +
|
||||
irTarget!!.createUsageContexts(irTarget!!.compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME))
|
||||
|
||||
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 result = createKotlinVariant(componentName, mainCompilation, 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"
|
||||
}
|
||||
result.sourcesArtifacts = setOf(
|
||||
sourcesJarArtifact(mainCompilation, componentName, dashSeparatedName(targetName.toLowerCase()))
|
||||
)
|
||||
|
||||
setOf(component)
|
||||
setOf(result)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -178,5 +157,9 @@ constructor(
|
||||
|
||||
const val LEGACY = "legacy"
|
||||
const val IR = "ir"
|
||||
|
||||
fun setupAttributesMatchingStrategy(attributesSchema: AttributesSchema) {
|
||||
attributesSchema.attribute(jsModeAttribute)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user