[Gradle, JS] Create not Jar tasks, but Zip tasks, because we can create klibs
This commit is contained in:
+10
-8
@@ -22,6 +22,7 @@ import org.gradle.api.plugins.ExtensionAware
|
||||
import org.gradle.api.plugins.JavaBasePlugin
|
||||
import org.gradle.api.tasks.Delete
|
||||
import org.gradle.api.tasks.bundling.Jar
|
||||
import org.gradle.api.tasks.bundling.Zip
|
||||
import org.gradle.language.base.plugins.LifecycleBasePlugin
|
||||
import org.gradle.language.jvm.tasks.ProcessResources
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
|
||||
@@ -350,12 +351,14 @@ abstract class KotlinOnlyTargetConfigurator<KotlinCompilationType : KotlinCompil
|
||||
}
|
||||
}
|
||||
|
||||
/** The implementations are expected to create a [Jar] task under the name [KotlinTarget.artifactsTaskName] of the [target]. */
|
||||
protected open fun createJarTasks(target: KotlinTargetType) {
|
||||
/** The implementations are expected to create a [Zip] task under the name [KotlinTarget.artifactsTaskName] of the [target]. */
|
||||
protected open fun createJarTasks(target: KotlinTargetType): Pair<String, Zip> {
|
||||
val result = target.project.tasks.create(target.artifactsTaskName, Jar::class.java)
|
||||
result.description = "Assembles a jar archive containing the main classes."
|
||||
result.group = BasePlugin.BUILD_GROUP
|
||||
result.from(target.compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME).output.allOutputs)
|
||||
|
||||
return ArtifactTypeDefinition.JAR_TYPE to result
|
||||
}
|
||||
|
||||
override fun configureArchivesAndComponent(target: KotlinTargetType) {
|
||||
@@ -363,17 +366,16 @@ abstract class KotlinOnlyTargetConfigurator<KotlinCompilationType : KotlinCompil
|
||||
|
||||
val mainCompilation = target.compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME)
|
||||
|
||||
createJarTasks(target)
|
||||
val jar = project.tasks.getByName(target.artifactsTaskName) as Jar
|
||||
val (type, task) = createJarTasks(target)
|
||||
|
||||
target.disambiguationClassifier?.let { jar.appendix = it.toLowerCase() }
|
||||
target.disambiguationClassifier?.let { task.appendix = it.toLowerCase() }
|
||||
|
||||
// Workaround: adding the artifact during configuration seems to interfere with the Java plugin, which results into missing
|
||||
// task dependency 'assemble -> jar' if the Java plugin is applied after this steps
|
||||
project.afterEvaluate {
|
||||
project.artifacts.add(Dependency.ARCHIVES_CONFIGURATION, jar) { jarArtifact ->
|
||||
jarArtifact.builtBy(jar)
|
||||
jarArtifact.type = ArtifactTypeDefinition.JAR_TYPE
|
||||
project.artifacts.add(Dependency.ARCHIVES_CONFIGURATION, task) { jarArtifact ->
|
||||
jarArtifact.builtBy(task)
|
||||
jarArtifact.type = type
|
||||
|
||||
val apiElementsConfiguration = project.configurations.getByName(target.apiElementsConfigurationName)
|
||||
addJar(apiElementsConfiguration, jarArtifact)
|
||||
|
||||
-11
@@ -5,7 +5,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.targets.js
|
||||
|
||||
import org.gradle.api.tasks.bundling.Jar
|
||||
import org.gradle.language.base.plugins.LifecycleBasePlugin
|
||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.Kotlin2JsSourceSetProcessor
|
||||
@@ -13,7 +12,6 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinOnlyTargetConfigurator
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetProcessor
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetWithTestsConfigurator
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.defaultSourceSetName
|
||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTargetConfigurator
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
|
||||
@@ -92,15 +90,6 @@ open class KotlinJsTargetConfigurator(kotlinPluginVersion: String, val irConfigu
|
||||
}
|
||||
}
|
||||
|
||||
override fun createJarTasks(target: KotlinOnlyTarget<KotlinJsCompilation>) {
|
||||
super.createJarTasks(target)
|
||||
val jar = target.project.tasks.getByName(target.artifactsTaskName) as Jar
|
||||
|
||||
if (irConfigurator != null) {
|
||||
jar.archiveAppendix.set("legacyJs")
|
||||
}
|
||||
}
|
||||
|
||||
override fun configureCompilations(target: KotlinJsTarget) {
|
||||
super.configureCompilations(target)
|
||||
|
||||
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.gradle.targets.js.ir
|
||||
|
||||
const val KLIB_TYPE = "klib"
|
||||
+9
-5
@@ -5,11 +5,13 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.targets.js.ir
|
||||
|
||||
import org.gradle.api.tasks.bundling.Zip
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinJsIrSourceSetProcessor
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinOnlyTargetConfigurator
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetProcessor
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetWithTestsConfigurator
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget
|
||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsIrReportAggregatingTestRun
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
|
||||
import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry
|
||||
@@ -21,11 +23,6 @@ open class KotlinJsIrTargetConfigurator(kotlinPluginVersion: String) :
|
||||
|
||||
override val testRunClass: Class<KotlinJsIrReportAggregatingTestRun> get() = KotlinJsIrReportAggregatingTestRun::class.java
|
||||
|
||||
@Deprecated("Remove when legacy js plugin will be removed")
|
||||
fun configureTarget(target: KotlinJsIrTarget, mixedMode: Boolean) {
|
||||
super<KotlinOnlyTargetConfigurator>.configureTarget(target) // TODO Add tests support
|
||||
}
|
||||
|
||||
override fun createTestRun(
|
||||
name: String,
|
||||
target: KotlinJsIrTarget
|
||||
@@ -54,6 +51,13 @@ open class KotlinJsIrTargetConfigurator(kotlinPluginVersion: String) :
|
||||
return KotlinJsIrSourceSetProcessor(compilation.target.project, tasksProvider, compilation, kotlinPluginVersion)
|
||||
}
|
||||
|
||||
override fun createJarTasks(target: KotlinOnlyTarget<KotlinJsIrCompilation>): Pair<String, Zip> {
|
||||
val (_, task) = super.createJarTasks(target)
|
||||
task.archiveExtension.set(KLIB_TYPE)
|
||||
|
||||
return KLIB_TYPE to task
|
||||
}
|
||||
|
||||
override fun configureCompilations(target: KotlinJsIrTarget) {
|
||||
super.configureCompilations(target)
|
||||
|
||||
|
||||
+6
-3
@@ -14,6 +14,7 @@ import org.gradle.api.plugins.BasePlugin
|
||||
import org.gradle.api.tasks.AbstractCopyTask
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.api.tasks.bundling.Jar
|
||||
import org.gradle.api.tasks.bundling.Zip
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
|
||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
|
||||
@@ -23,8 +24,8 @@ import org.jetbrains.kotlin.gradle.plugin.sources.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
|
||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||
import org.jetbrains.kotlin.gradle.tasks.locateTask
|
||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||
import org.jetbrains.kotlin.gradle.utils.addExtendsFromRelation
|
||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||
import org.jetbrains.kotlin.gradle.utils.setArchiveAppendixCompatible
|
||||
@@ -131,8 +132,8 @@ class KotlinMetadataTargetConfigurator(kotlinPluginVersion: String) :
|
||||
override fun run() = Unit
|
||||
}
|
||||
|
||||
override fun createJarTasks(target: KotlinMetadataTarget) {
|
||||
super.createJarTasks(target)
|
||||
override fun createJarTasks(target: KotlinMetadataTarget): Pair<String, Zip> {
|
||||
val result = super.createJarTasks(target)
|
||||
|
||||
if (target.project.isKotlinGranularMetadataEnabled) {
|
||||
target.project.locateTask<Jar>(target.artifactsTaskName)!!.configure {
|
||||
@@ -157,6 +158,8 @@ class KotlinMetadataTargetConfigurator(kotlinPluginVersion: String) :
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
private fun setupDependencyTransformationForCommonSourceSets(target: KotlinMetadataTarget) {
|
||||
|
||||
Reference in New Issue
Block a user