[Gradle, JS] Group sub target tasks with dis classifier group

#KT-38056 fixed
This commit is contained in:
Ilya Goncharov
2020-04-06 13:35:01 +03:00
parent 4b903088bf
commit 53a20017ec
3 changed files with 20 additions and 7 deletions
@@ -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
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig.Mode import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig.Mode
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackDevtool import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackDevtool
import org.jetbrains.kotlin.gradle.tasks.registerTask
import javax.inject.Inject import javax.inject.Inject
open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) : open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
@@ -61,7 +60,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
val project = compilation.target.project val project = compilation.target.project
val nodeJs = NodeJsRootPlugin.apply(project.rootProject) val nodeJs = NodeJsRootPlugin.apply(project.rootProject)
val commonRunTask = project.registerTask<Task>(disambiguateCamelCased(RUN_TASK_NAME)) {} val commonRunTask = registerSubTargetTask<Task>(disambiguateCamelCased(RUN_TASK_NAME)) {}
compilation.binaries compilation.binaries
.matching { it is Executable } .matching { it is Executable }
@@ -70,7 +69,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
val type = binary.type val type = binary.type
val runTask = project.registerTask<KotlinWebpack>( val runTask = registerSubTargetTask<KotlinWebpack>(
disambiguateCamelCased( disambiguateCamelCased(
binary.executeTaskBaseName, binary.executeTaskBaseName,
RUN_TASK_NAME RUN_TASK_NAME
@@ -118,7 +117,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
val processResourcesTask = target.project.tasks.named(compilation.processResourcesTaskName) val processResourcesTask = target.project.tasks.named(compilation.processResourcesTaskName)
val distributeResourcesTask = project.registerTask<Copy>( val distributeResourcesTask = registerSubTargetTask<Copy>(
disambiguateCamelCased( disambiguateCamelCased(
DISTRIBUTE_RESOURCES_TASK_NAME DISTRIBUTE_RESOURCES_TASK_NAME
) )
@@ -136,7 +135,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
binary as Executable binary as Executable
val type = binary.type val type = binary.type
val webpackTask = project.registerTask<KotlinWebpack>( val webpackTask = registerSubTargetTask<KotlinWebpack>(
disambiguateCamelCased( disambiguateCamelCased(
binary.executeTaskBaseName, binary.executeTaskBaseName,
WEBPACK_TASK_NAME WEBPACK_TASK_NAME
@@ -162,12 +161,12 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
if (type == KotlinJsBinaryType.PRODUCTION) { if (type == KotlinJsBinaryType.PRODUCTION) {
assembleTask.dependsOn(webpackTask) assembleTask.dependsOn(webpackTask)
val webpackCommonTask = project.registerTask<Task>( val webpackCommonTask = registerSubTargetTask<Task>(
disambiguateCamelCased(WEBPACK_TASK_NAME) disambiguateCamelCased(WEBPACK_TASK_NAME)
) { ) {
it.dependsOn(webpackTask) it.dependsOn(webpackTask)
} }
project.registerTask<Task>(disambiguateCamelCased(DISTRIBUTION_TASK_NAME)) { registerSubTargetTask<Task>(disambiguateCamelCased(DISTRIBUTION_TASK_NAME)) {
it.dependsOn(webpackCommonTask) it.dependsOn(webpackCommonTask)
it.dependsOn(distributeResourcesTask) it.dependsOn(distributeResourcesTask)
@@ -6,7 +6,9 @@
package org.jetbrains.kotlin.gradle.targets.js.ir package org.jetbrains.kotlin.gradle.targets.js.ir
import org.gradle.api.NamedDomainObjectContainer import org.gradle.api.NamedDomainObjectContainer
import org.gradle.api.Task
import org.gradle.api.plugins.ExtensionAware import org.gradle.api.plugins.ExtensionAware
import org.gradle.api.tasks.TaskProvider
import org.gradle.language.base.plugins.LifecycleBasePlugin import org.gradle.language.base.plugins.LifecycleBasePlugin
import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
@@ -36,6 +38,8 @@ abstract class KotlinJsIrSubTarget(
final override lateinit var testRuns: NamedDomainObjectContainer<KotlinJsPlatformTestRun> final override lateinit var testRuns: NamedDomainObjectContainer<KotlinJsPlatformTestRun>
private set private set
protected val taskGroupName = "Kotlin $disambiguationClassifier"
internal fun configure() { internal fun configure() {
NpmResolverPlugin.apply(project) NpmResolverPlugin.apply(project)
@@ -154,6 +158,15 @@ abstract class KotlinJsIrSubTarget(
protected abstract fun configureBuild(compilation: KotlinJsIrCompilation) protected abstract fun configureBuild(compilation: KotlinJsIrCompilation)
internal inline fun <reified T : Task> registerSubTargetTask(
name: String,
noinline body: (T) -> (Unit)
): TaskProvider<T> =
project.registerTask(name) {
it.group = taskGroupName
body(it)
}
companion object { companion object {
const val RUN_TASK_NAME = "run" const val RUN_TASK_NAME = "run"
} }
@@ -34,6 +34,7 @@ open class KotlinNodeJsIr @Inject constructor(target: KotlinJsIrTarget) :
val developmentExecutable = compilation.binaries.getIrBinary(KotlinJsBinaryType.DEVELOPMENT) val developmentExecutable = compilation.binaries.getIrBinary(KotlinJsBinaryType.DEVELOPMENT)
val runTaskHolder = NodeJsExec.create(compilation, disambiguateCamelCased(RUN_TASK_NAME)) { val runTaskHolder = NodeJsExec.create(compilation, disambiguateCamelCased(RUN_TASK_NAME)) {
this.group = taskGroupName
inputFileProperty.set(developmentExecutable.linkTask.map { it.outputFileProperty.get() }) inputFileProperty.set(developmentExecutable.linkTask.map { it.outputFileProperty.get() })
} }
target.runTask.dependsOn(runTaskHolder) target.runTask.dependsOn(runTaskHolder)