[Gradle, JS] Use property for webpack entry

This commit is contained in:
Ilya Goncharov
2020-05-27 11:49:55 +03:00
parent 65db6bb2a5
commit d4d8495840
3 changed files with 24 additions and 17 deletions
@@ -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. * 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() byCompilation[compilation] ?: listOf()
init { init {
projectNpmResolver.project.tasks.implementing(RequiresNpmDependencies::class).forEach { task -> projectNpmResolver.project.tasks.implementing(RequiresNpmDependencies::class).configureEach { task ->
if (task.enabled) { if (task.enabled) {
addTaskRequirements(task as RequiresNpmDependencies) addTaskRequirements(task as RequiresNpmDependencies)
task.dependsOn(projectNpmResolver[task.compilation].packageJsonTaskHolder) task.dependsOn(projectNpmResolver[task.compilation].packageJsonTaskHolder)
@@ -132,13 +132,12 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
KotlinJsBinaryType.DEVELOPMENT -> devDceTaskProvider KotlinJsBinaryType.DEVELOPMENT -> devDceTaskProvider
} }
// Breaking of Task Configuration Avoidance is not so critical it.entryProperty.set(
// because this task is dependent on DCE task actualDceTaskProvider.map {
it.entry = actualDceTaskProvider.get() it.destinationDir
.destinationDir .resolve(compileKotlinTask.outputFile.name)
.resolve(compileKotlinTask.outputFile.name) }
)
it.dependsOn(actualDceTaskProvider)
it.resolveFromModulesFirst = true it.resolveFromModulesFirst = true
@@ -208,13 +207,12 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
KotlinJsBinaryType.DEVELOPMENT -> devDceTaskProvider KotlinJsBinaryType.DEVELOPMENT -> devDceTaskProvider
} }
// Breaking of Task Configuration Avoidance is not so critical it.entryProperty.set(
// because this task is dependent on DCE task actualDceTaskProvider.map {
it.entry = actualDceTaskProvider.get() it.destinationDir
.destinationDir .resolve(compileKotlinTask.outputFile.name)
.resolve(compileKotlinTask.outputFile.name) }
)
it.dependsOn(actualDceTaskProvider)
commonWebpackConfigurations.forEach { configure -> commonWebpackConfigurations.forEach { configure ->
it.configure() it.configure()
@@ -10,6 +10,7 @@ import org.gradle.api.Incubating
import org.gradle.api.file.FileCollection import org.gradle.api.file.FileCollection
import org.gradle.api.internal.file.FileResolver import org.gradle.api.internal.file.FileResolver
import org.gradle.api.plugins.BasePluginConvention import org.gradle.api.plugins.BasePluginConvention
import org.gradle.api.provider.Property
import org.gradle.api.tasks.* import org.gradle.api.tasks.*
import org.gradle.deployment.internal.Deployment import org.gradle.deployment.internal.Deployment
import org.gradle.deployment.internal.DeploymentHandle 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.targets.js.webpack.KotlinWebpackConfig.Mode
import org.jetbrains.kotlin.gradle.testing.internal.reportsDir import org.jetbrains.kotlin.gradle.testing.internal.reportsDir
import org.jetbrains.kotlin.gradle.utils.injected import org.jetbrains.kotlin.gradle.utils.injected
import org.jetbrains.kotlin.gradle.utils.newProperty
import org.jetbrains.kotlin.gradle.utils.property import org.jetbrains.kotlin.gradle.utils.property
import java.io.File import java.io.File
import javax.inject.Inject import javax.inject.Inject
@@ -53,9 +55,16 @@ open class KotlinWebpack : DefaultTask(), RequiresNpmDependencies {
@Input @Input
var mode: Mode = Mode.DEVELOPMENT var mode: Mode = Mode.DEVELOPMENT
@get:Internal
var entry: File
get() = entryProperty.get()
set(value) {
entryProperty.set(value)
}
@get:PathSensitive(PathSensitivity.ABSOLUTE) @get:PathSensitive(PathSensitivity.ABSOLUTE)
@get:InputFile @get:InputFile
var entry: File by property { val entryProperty: Property<File> = project.newProperty {
compilation.compileKotlinTask.outputFile compilation.compileKotlinTask.outputFile
} }