diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt index c3edded0c0f..2f96e46cef0 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt @@ -17,7 +17,6 @@ import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpack import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig.Mode import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackDevtool -import org.jetbrains.kotlin.gradle.tasks.registerTask import javax.inject.Inject open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) : @@ -61,7 +60,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) : val project = compilation.target.project val nodeJs = NodeJsRootPlugin.apply(project.rootProject) - val commonRunTask = project.registerTask(disambiguateCamelCased(RUN_TASK_NAME)) {} + val commonRunTask = registerSubTargetTask(disambiguateCamelCased(RUN_TASK_NAME)) {} compilation.binaries .matching { it is Executable } @@ -70,7 +69,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) : val type = binary.type - val runTask = project.registerTask( + val runTask = registerSubTargetTask( disambiguateCamelCased( binary.executeTaskBaseName, RUN_TASK_NAME @@ -118,7 +117,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) : val processResourcesTask = target.project.tasks.named(compilation.processResourcesTaskName) - val distributeResourcesTask = project.registerTask( + val distributeResourcesTask = registerSubTargetTask( disambiguateCamelCased( DISTRIBUTE_RESOURCES_TASK_NAME ) @@ -136,7 +135,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) : binary as Executable val type = binary.type - val webpackTask = project.registerTask( + val webpackTask = registerSubTargetTask( disambiguateCamelCased( binary.executeTaskBaseName, WEBPACK_TASK_NAME @@ -162,12 +161,12 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) : if (type == KotlinJsBinaryType.PRODUCTION) { assembleTask.dependsOn(webpackTask) - val webpackCommonTask = project.registerTask( + val webpackCommonTask = registerSubTargetTask( disambiguateCamelCased(WEBPACK_TASK_NAME) ) { it.dependsOn(webpackTask) } - project.registerTask(disambiguateCamelCased(DISTRIBUTION_TASK_NAME)) { + registerSubTargetTask(disambiguateCamelCased(DISTRIBUTION_TASK_NAME)) { it.dependsOn(webpackCommonTask) it.dependsOn(distributeResourcesTask) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt index 41ac817dc40..67606d1a7b9 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt @@ -6,7 +6,9 @@ package org.jetbrains.kotlin.gradle.targets.js.ir import org.gradle.api.NamedDomainObjectContainer +import org.gradle.api.Task import org.gradle.api.plugins.ExtensionAware +import org.gradle.api.tasks.TaskProvider import org.gradle.language.base.plugins.LifecycleBasePlugin import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation @@ -36,6 +38,8 @@ abstract class KotlinJsIrSubTarget( final override lateinit var testRuns: NamedDomainObjectContainer private set + protected val taskGroupName = "Kotlin $disambiguationClassifier" + internal fun configure() { NpmResolverPlugin.apply(project) @@ -154,6 +158,15 @@ abstract class KotlinJsIrSubTarget( protected abstract fun configureBuild(compilation: KotlinJsIrCompilation) + internal inline fun registerSubTargetTask( + name: String, + noinline body: (T) -> (Unit) + ): TaskProvider = + project.registerTask(name) { + it.group = taskGroupName + body(it) + } + companion object { const val RUN_TASK_NAME = "run" } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinNodeJsIr.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinNodeJsIr.kt index 9d0d5eaf8bd..5e504da3d67 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinNodeJsIr.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinNodeJsIr.kt @@ -34,6 +34,7 @@ open class KotlinNodeJsIr @Inject constructor(target: KotlinJsIrTarget) : val developmentExecutable = compilation.binaries.getIrBinary(KotlinJsBinaryType.DEVELOPMENT) val runTaskHolder = NodeJsExec.create(compilation, disambiguateCamelCased(RUN_TASK_NAME)) { + this.group = taskGroupName inputFileProperty.set(developmentExecutable.linkTask.map { it.outputFileProperty.get() }) } target.runTask.dependsOn(runTaskHolder)