From c5c3f52b81337ed6f8fcae38be8f202a40557f87 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Thu, 26 Mar 2020 12:21:11 +0300 Subject: [PATCH] [Gradle, JS] Umbrella package json task #KT-32466 fixed #KT-36784 fixed #KT-36864 fixed --- .../targets/js/npm/resolver/KotlinRootNpmResolver.kt | 7 ++++++- .../gradle/targets/js/npm/tasks/KotlinPackageJsonTask.kt | 4 +++- 2 files changed, 9 insertions(+), 2 deletions(-) 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) }