diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt index 5eee7a75a0b..b4b5dea448d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTargetConfigurator.kt @@ -93,7 +93,7 @@ open class KotlinJsTargetConfigurator(kotlinPluginVersion: String) : super.configureCompilations(target) target.compilations.all { - it.compileKotlinTask.kotlinOptions { + it.kotlinOptions { moduleKind = "umd" sourceMap = true sourceMapEmbedSources = null diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatCompilationResolverPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatCompilationResolverPlugin.kt index c4e73107616..8265ab2643b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatCompilationResolverPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatCompilationResolverPlugin.kt @@ -43,7 +43,7 @@ internal class DukatCompilationResolverPlugin( ) { it.group = DUKAT_TASK_GROUP it.description = "Generate Kotlin/JS external declarations for .d.ts files of all NPM dependencies in ${compilation}" - it.dependsOn(nodeJs.npmInstallTask, npmProject.packageJsonTask) + it.dependsOn(nodeJs.npmInstallTaskProvider, npmProject.packageJsonTask) } } 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 d78a4768bc6..ed0fe504ff6 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 @@ -178,7 +178,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) : val type = binary.mode dependsOn( - nodeJs.npmInstallTask, + nodeJs.npmInstallTaskProvider, target.project.tasks.named(compilation.processResourcesTaskName) ) 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 52d769016cd..208e6b8891d 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 @@ -113,7 +113,7 @@ abstract class KotlinJsIrSubTarget( testExecutableTask.flatMap { it.outputFileProperty } ) - testJs.dependsOn(nodeJs.npmInstallTask, nodeJs.nodeJsSetupTask) + testJs.dependsOn(nodeJs.npmInstallTaskProvider, nodeJs.nodeJsSetupTaskProvider) testJs.onlyIf { task -> (task as KotlinJsTest).inputFileProperty diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/NodeJsExec.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/NodeJsExec.kt index d03c0480f28..5292d5853be 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/NodeJsExec.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/NodeJsExec.kt @@ -86,10 +86,9 @@ constructor( ) { it.nodeJs = nodeJs it.executable = nodeJs.requireConfigured().nodeExecutable - it.dependsOn(nodeJs.npmInstallTask) + it.dependsOn(nodeJs.npmInstallTaskProvider) - val compileKotlinTask = compilation.compileKotlinTask - it.dependsOn(nodeJs.npmInstallTask, compileKotlinTask) + it.dependsOn(nodeJs.npmInstallTaskProvider, compilation.compileKotlinTaskProvider) it.configuration() } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/NodeJsRootExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/NodeJsRootExtension.kt index 9807a071553..d77ad4e0916 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/NodeJsRootExtension.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/NodeJsRootExtension.kt @@ -52,17 +52,17 @@ open class NodeJsRootExtension(val rootProject: Project) : ConfigurationPhaseAwa val taskRequirements = TasksRequirements() - val nodeJsSetupTask: NodeJsSetupTask - get() = rootProject.tasks.getByName(NodeJsSetupTask.NAME) as NodeJsSetupTask + val nodeJsSetupTaskProvider: TaskProvider + get() = rootProject.tasks.withType(NodeJsSetupTask::class.java).named(NodeJsSetupTask.NAME) - val npmInstallTask: KotlinNpmInstallTask - get() = rootProject.tasks.getByName(KotlinNpmInstallTask.NAME) as KotlinNpmInstallTask + val npmInstallTaskProvider: TaskProvider + get() = rootProject.tasks.withType(KotlinNpmInstallTask::class.java).named(KotlinNpmInstallTask.NAME) val packageJsonUmbrellaTaskProvider: TaskProvider get() = rootProject.tasks.named(PACKAGE_JSON_UMBRELLA_TASK_NAME) - val rootPackageJsonTask: RootPackageJsonTask - get() = rootProject.tasks.getByName(RootPackageJsonTask.NAME) as RootPackageJsonTask + val rootPackageJsonTaskProvider: TaskProvider + get() = rootProject.tasks.withType(RootPackageJsonTask::class.java).named(RootPackageJsonTask.NAME) val rootPackageDir: File get() = rootProject.buildDir.resolve("js") @@ -111,7 +111,7 @@ open class NodeJsRootExtension(val rootProject: Project) : ConfigurationPhaseAwa val nodeJsEnv = requireConfigured() if (download) { if (!nodeJsEnv.nodeBinDir.isDirectory) { - nodeJsSetupTask.exec() + nodeJsSetupTaskProvider.get().exec() } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/KotlinNpmResolutionManager.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/KotlinNpmResolutionManager.kt index 9463c0ed895..561d583c65b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/KotlinNpmResolutionManager.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/KotlinNpmResolutionManager.kt @@ -132,7 +132,7 @@ class KotlinNpmResolutionManager(private val nodeJsSettings: NodeJsRootExtension return (state as ResolutionState.Installed).resolved } - val installUpToDate = nodeJsSettings.npmInstallTask.state.upToDate + val installUpToDate = nodeJsSettings.npmInstallTaskProvider.get().state.upToDate val forceUpToDate = installUpToDate && !forceFullResolve val installation = prepareIfNeeded(requireUpToDateReason = reason) @@ -175,7 +175,7 @@ class KotlinNpmResolutionManager(private val nodeJsSettings: NodeJsRootExtension when (state1) { is ResolutionState.Prepared -> alreadyResolved(state1.preparedInstallation) is ResolutionState.Configuring -> { - val upToDate = nodeJsSettings.rootPackageJsonTask.state.upToDate + val upToDate = nodeJsSettings.rootPackageJsonTaskProvider.get().state.upToDate if (requireUpToDateReason != null && !upToDate) { error("NPM dependencies should be resolved $requireUpToDateReason") } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt index 75e77e92045..bdc57e6c7e7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt @@ -57,7 +57,7 @@ internal class KotlinCompilationNpmResolver( listOf(nodeJs, npmProject) ) { it.skipOnEmptyNpmDependencies = true - it.dependsOn(nodeJs.npmInstallTask) + it.dependsOn(nodeJs.npmInstallTaskProvider) it.dependsOn(packageJsonTaskHolder) }.also { packageJsonTask -> if (compilation.isMain()) { 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 2a0077fe09f..b74da88dde3 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 @@ -59,7 +59,7 @@ internal class KotlinProjectNpmResolver( nodeJs.taskRequirements.addTaskRequirements(task) } task.dependsOn(packageJsonTaskHolder) - task.dependsOn(nodeJs.npmInstallTask) + task.dependsOn(nodeJs.npmInstallTaskProvider) } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinPackageJsonTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinPackageJsonTask.kt index 3fd396ac2b4..394d4ac6bf5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinPackageJsonTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinPackageJsonTask.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject import org.jetbrains.kotlin.gradle.targets.js.npm.resolver.KotlinCompilationNpmResolver import org.jetbrains.kotlin.gradle.targets.js.npm.resolver.PACKAGE_JSON_UMBRELLA_TASK_NAME +import org.jetbrains.kotlin.gradle.tasks.dependsOn import org.jetbrains.kotlin.gradle.tasks.registerTask import java.io.File @@ -61,7 +62,7 @@ open class KotlinPackageJsonTask : DefaultTask() { val nodeJs = NodeJsRootPlugin.apply(project.rootProject) val rootClean = project.rootProject.tasks.named(BasePlugin.CLEAN_TASK_NAME) - val npmInstallTask = nodeJs.npmInstallTask + val npmInstallTask = nodeJs.npmInstallTaskProvider val packageJsonTaskName = npmProject.packageJsonTaskName val packageJsonUmbrella = nodeJs.packageJsonUmbrellaTaskProvider val packageJsonTask = project.registerTask(packageJsonTaskName) { task -> @@ -77,12 +78,10 @@ open class KotlinPackageJsonTask : DefaultTask() { task.inputs.file(packageJsonTask.map { it.packageJson }) } - nodeJs.rootPackageJsonTask.mustRunAfter(packageJsonTask) + nodeJs.rootPackageJsonTaskProvider.configure { it.mustRunAfter(packageJsonTask) } - compilation.compileKotlinTask.dependsOn( - npmInstallTask, - packageJsonTask - ) + compilation.compileKotlinTaskProvider.dependsOn(npmInstallTask) + compilation.compileKotlinTaskProvider.dependsOn(packageJsonTask) return packageJsonTask } 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 c7c57156993..94972690f5c 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 @@ -216,7 +216,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) : nodeJs: NodeJsRootExtension ) { dependsOn( - nodeJs.npmInstallTask, + nodeJs.npmInstallTaskProvider, target.project.tasks.named(compilation.processResourcesTaskName) ) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinJsSubTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinJsSubTarget.kt index 38f0276d7c1..8c38540eb47 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinJsSubTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinJsSubTarget.kt @@ -27,7 +27,6 @@ import org.jetbrains.kotlin.gradle.tasks.registerTask import org.jetbrains.kotlin.gradle.testing.internal.configureConventions import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName -import org.jetbrains.kotlin.gradle.utils.newFileProperty abstract class KotlinJsSubTarget( val target: KotlinJsTarget, @@ -59,7 +58,9 @@ abstract class KotlinJsSubTarget( target.compilations.all { val npmProject = it.npmProject - it.compileKotlinTask.kotlinOptions.outputFile = npmProject.dir.resolve(npmProject.main).canonicalPath + it.kotlinOptions { + outputFile = npmProject.dir.resolve(npmProject.main).canonicalPath + } } } @@ -97,19 +98,18 @@ abstract class KotlinJsSubTarget( testRun.subtargetTestTaskName(), listOf(compilation) ) { testJs -> - val compileTask = compilation.compileKotlinTask + val compileTask = compilation.compileKotlinTaskProvider testJs.group = LifecycleBasePlugin.VERIFICATION_GROUP testJs.description = testTaskDescription - testJs.inputFileProperty.set(project.newFileProperty { - compileTask.outputFile - }) + val compileOutputFile = compileTask.map { it.outputFile } + testJs.inputFileProperty.set(project.layout.file(compileOutputFile)) - testJs.dependsOn(nodeJs.npmInstallTask, compileTask, nodeJs.nodeJsSetupTask) + testJs.dependsOn(nodeJs.npmInstallTaskProvider, compileTask, nodeJs.nodeJsSetupTaskProvider) testJs.onlyIf { - compileTask.outputFile.exists() + compileOutputFile.get().exists() } testJs.targetName = listOfNotNull(target.disambiguationClassifier, disambiguationClassifier) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnPlugin.kt index f1467737fe2..39439de90e5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnPlugin.kt @@ -27,7 +27,7 @@ open class YarnPlugin : Plugin { val nodeJs = NodeJsRootPlugin.apply(this) registerTask(YarnSetupTask.NAME) { - it.dependsOn(nodeJs.nodeJsSetupTask) + it.dependsOn(nodeJs.nodeJsSetupTaskProvider) } val rootClean = project.rootProject.tasks.named(BasePlugin.CLEAN_TASK_NAME) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/testing/internal/KotlinTestsRegistry.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/testing/internal/KotlinTestsRegistry.kt index 4a2180eb5f1..933b0a6dca8 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/testing/internal/KotlinTestsRegistry.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/testing/internal/KotlinTestsRegistry.kt @@ -24,9 +24,8 @@ class KotlinTestsRegistry(val project: Project, val allTestsTaskName: String = " get() = doGetOrCreateAggregatedTestTask( name = allTestsTaskName, description = "Runs the tests for all targets and create aggregated report" - ) { - project.tasks.maybeCreate(LifecycleBasePlugin.CHECK_TASK_NAME) - .dependsOn(it) + ).also { + project.tasks.named(LifecycleBasePlugin.CHECK_TASK_NAME).dependsOn(it) } fun registerTestTask(