[Gradle, JS] Register link tasks for binaries, not for compilations
This commit is contained in:
+13
-35
@@ -40,6 +40,7 @@ import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubplugin
|
|||||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.BuildVariantKind
|
import org.jetbrains.kotlin.gradle.targets.js.dsl.BuildVariantKind
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrLink
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrLink
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
|
||||||
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
|
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
|
||||||
import org.jetbrains.kotlin.gradle.tasks.*
|
import org.jetbrains.kotlin.gradle.tasks.*
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
@@ -101,18 +102,21 @@ internal abstract class KotlinSourceSetProcessor<T : AbstractKotlinCompile<*>>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun prepareKotlinCompileTask(): TaskProvider<out T> =
|
private fun prepareKotlinCompileTask(): TaskProvider<out T> =
|
||||||
registerKotlinCompileTask().also { task ->
|
registerKotlinCompileTask(register = ::doRegisterTask).also { task ->
|
||||||
kotlinCompilation.output.addClassesDir { project.files(task.map { it.destinationDir }) }
|
kotlinCompilation.output.addClassesDir { project.files(task.map { it.destinationDir }) }
|
||||||
}
|
}
|
||||||
|
|
||||||
protected fun registerKotlinCompileTask(name: String = kotlinCompilation.compileKotlinTaskName): TaskProvider<out T> {
|
protected fun registerKotlinCompileTask(
|
||||||
|
name: String = kotlinCompilation.compileKotlinTaskName,
|
||||||
|
register: (Project, String, (T) -> Unit) -> TaskProvider<out T>
|
||||||
|
): TaskProvider<out T> {
|
||||||
logger.kotlinDebug("Creating kotlin compile task $name")
|
logger.kotlinDebug("Creating kotlin compile task $name")
|
||||||
|
|
||||||
KotlinCompileTaskData.register(name, kotlinCompilation).apply {
|
KotlinCompileTaskData.register(name, kotlinCompilation).apply {
|
||||||
destinationDir.set(project.provider { defaultKotlinDestinationDir })
|
destinationDir.set(project.provider { defaultKotlinDestinationDir })
|
||||||
}
|
}
|
||||||
|
|
||||||
return doRegisterTask(project, name) {
|
return register(project, name) {
|
||||||
it.description = taskDescription
|
it.description = taskDescription
|
||||||
it.mapClasspath { kotlinCompilation.compileDependencyFiles }
|
it.mapClasspath { kotlinCompilation.compileDependencyFiles }
|
||||||
}
|
}
|
||||||
@@ -321,29 +325,8 @@ internal class KotlinJsIrSourceSetProcessor(
|
|||||||
project: Project,
|
project: Project,
|
||||||
taskName: String,
|
taskName: String,
|
||||||
configureAction: (Kotlin2JsCompile) -> (Unit)
|
configureAction: (Kotlin2JsCompile) -> (Unit)
|
||||||
): TaskProvider<out Kotlin2JsCompile> {
|
): TaskProvider<out Kotlin2JsCompile> =
|
||||||
val compilation = kotlinCompilation as KotlinJsIrCompilation
|
tasksProvider.registerKotlinJSTask(project, taskName, kotlinCompilation, configureAction)
|
||||||
|
|
||||||
if (taskName == compilation.productionLinkTaskName) {
|
|
||||||
return registerJsLink(
|
|
||||||
project,
|
|
||||||
taskName,
|
|
||||||
BuildVariantKind.PRODUCTION,
|
|
||||||
configureAction
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (taskName == compilation.developmentLinkTaskName) {
|
|
||||||
return registerJsLink(
|
|
||||||
project,
|
|
||||||
taskName,
|
|
||||||
BuildVariantKind.DEVELOPMENT,
|
|
||||||
configureAction
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
return tasksProvider.registerKotlinJSTask(project, taskName, kotlinCompilation, configureAction)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun registerJsLink(
|
private fun registerJsLink(
|
||||||
project: Project,
|
project: Project,
|
||||||
@@ -368,16 +351,11 @@ internal class KotlinJsIrSourceSetProcessor(
|
|||||||
|
|
||||||
val compilation = kotlinCompilation as KotlinJsIrCompilation
|
val compilation = kotlinCompilation as KotlinJsIrCompilation
|
||||||
|
|
||||||
listOf(
|
(compilation.target as KotlinJsIrTarget).binaries.all { binary ->
|
||||||
compilation.productionLinkTaskName,
|
|
||||||
compilation.developmentLinkTaskName
|
|
||||||
).onEach { taskName ->
|
|
||||||
registerKotlinCompileTask(
|
registerKotlinCompileTask(
|
||||||
taskName
|
binary.linkTaskName
|
||||||
)
|
) { project, name, action ->
|
||||||
}.forEach { taskName ->
|
registerJsLink(project, name, binary.type, action)
|
||||||
project.tasks.named(taskName).configure {
|
|
||||||
it.dependsOn(kotlinTask)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user