diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinProjectNpmResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinProjectNpmResolver.kt index 300f0b957b9..418cd95ce32 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinProjectNpmResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinProjectNpmResolver.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * 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. */ @@ -108,7 +108,7 @@ internal class KotlinProjectNpmResolver( byCompilation[compilation] ?: listOf() init { - projectNpmResolver.project.tasks.implementing(RequiresNpmDependencies::class).forEach { task -> + projectNpmResolver.project.tasks.implementing(RequiresNpmDependencies::class).configureEach { task -> if (task.enabled) { addTaskRequirements(task as RequiresNpmDependencies) task.dependsOn(projectNpmResolver[task.compilation].packageJsonTaskHolder) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinBrowserJs.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinBrowserJs.kt index 81198a9e991..07cfe0cf210 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinBrowserJs.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinBrowserJs.kt @@ -132,13 +132,12 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) : KotlinJsBinaryType.DEVELOPMENT -> devDceTaskProvider } - // Breaking of Task Configuration Avoidance is not so critical - // because this task is dependent on DCE task - it.entry = actualDceTaskProvider.get() - .destinationDir - .resolve(compileKotlinTask.outputFile.name) - - it.dependsOn(actualDceTaskProvider) + it.entryProperty.set( + actualDceTaskProvider.map { + it.destinationDir + .resolve(compileKotlinTask.outputFile.name) + } + ) it.resolveFromModulesFirst = true @@ -208,13 +207,12 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) : KotlinJsBinaryType.DEVELOPMENT -> devDceTaskProvider } - // Breaking of Task Configuration Avoidance is not so critical - // because this task is dependent on DCE task - it.entry = actualDceTaskProvider.get() - .destinationDir - .resolve(compileKotlinTask.outputFile.name) - - it.dependsOn(actualDceTaskProvider) + it.entryProperty.set( + actualDceTaskProvider.map { + it.destinationDir + .resolve(compileKotlinTask.outputFile.name) + } + ) commonWebpackConfigurations.forEach { configure -> it.configure() diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpack.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpack.kt index e61d40adddb..0b9e68aea68 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpack.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpack.kt @@ -10,6 +10,7 @@ import org.gradle.api.Incubating import org.gradle.api.file.FileCollection import org.gradle.api.internal.file.FileResolver import org.gradle.api.plugins.BasePluginConvention +import org.gradle.api.provider.Property import org.gradle.api.tasks.* import org.gradle.deployment.internal.Deployment import org.gradle.deployment.internal.DeploymentHandle @@ -24,6 +25,7 @@ import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig.Mode import org.jetbrains.kotlin.gradle.testing.internal.reportsDir import org.jetbrains.kotlin.gradle.utils.injected +import org.jetbrains.kotlin.gradle.utils.newProperty import org.jetbrains.kotlin.gradle.utils.property import java.io.File import javax.inject.Inject @@ -53,9 +55,16 @@ open class KotlinWebpack : DefaultTask(), RequiresNpmDependencies { @Input var mode: Mode = Mode.DEVELOPMENT + @get:Internal + var entry: File + get() = entryProperty.get() + set(value) { + entryProperty.set(value) + } + @get:PathSensitive(PathSensitivity.ABSOLUTE) @get:InputFile - var entry: File by property { + val entryProperty: Property = project.newProperty { compilation.compileKotlinTask.outputFile }