diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinRootNpmResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinRootNpmResolver.kt index 2daed5e883f..09b6728c87f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinRootNpmResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinRootNpmResolver.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.gradle.targets.js.npm.resolver import org.gradle.api.Project +import org.gradle.api.Task import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.targets.js.dukat.DukatRootResolverPlugin @@ -18,6 +19,7 @@ import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJsonUpToDateCheck import org.jetbrains.kotlin.gradle.targets.js.npm.plugins.RootResolverPlugin import org.jetbrains.kotlin.gradle.targets.js.npm.resolved.KotlinCompilationNpmResolution import org.jetbrains.kotlin.gradle.targets.js.npm.resolved.KotlinRootNpmResolution +import org.jetbrains.kotlin.gradle.tasks.registerTask /** * See [KotlinNpmResolutionManager] for details about resolution process. @@ -39,6 +41,7 @@ internal class KotlinRootNpmResolver internal constructor( val gradleNodeModules = GradleNodeModulesCache(nodeJs) val compositeNodeModules = CompositeNodeModulesCache(nodeJs) + val packageJsonUmbrella = rootProject.registerTask(PACKAGE_JSON_UMBRELLA_TASK_NAME, Task::class.java) {} private val projectResolvers = mutableMapOf() fun alreadyResolvedMessage(action: String) = "Cannot $action. NodeJS projects already resolved." @@ -131,4 +134,6 @@ internal class KotlinRootNpmResolver internal constructor( } } } -} \ No newline at end of file +} + +const val PACKAGE_JSON_UMBRELLA_TASK_NAME = "packageJsonUmbrella" \ No newline at end of file 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 d4a347a0710..446d6979f65 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 @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension 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.registerTask import java.io.File @@ -33,7 +34,7 @@ open class KotlinPackageJsonTask : DefaultTask() { producer.internalDependencies.map { dependentResolver -> dependentResolver.npmProject.packageJsonTask } + producer.internalCompositeDependencies.map { dependency -> - dependency.includedBuild.task(":packageJson") + dependency.includedBuild.task(":$PACKAGE_JSON_UMBRELLA_TASK_NAME") } @get:Nested @@ -66,6 +67,7 @@ open class KotlinPackageJsonTask : DefaultTask() { task.group = NodeJsRootPlugin.TASKS_GROUP_NAME task.dependsOn(target.project.provider { task.findDependentTasks() }) + task.dependsOn(project.rootProject.tasks.named(PACKAGE_JSON_UMBRELLA_TASK_NAME)) task.mustRunAfter(rootClean) }