[Gradle, JS] Make packageJsonHandlers compatible with configuration cache
#KT-49061 Fixed
This commit is contained in:
committed by
Space
parent
6a6cc1db77
commit
b4cb7f3610
+7
-6
@@ -70,10 +70,6 @@ internal class KotlinCompilationNpmResolver(
|
|||||||
|
|
||||||
val projectPath = project.path
|
val projectPath = project.path
|
||||||
|
|
||||||
val packageJsonHandlers by lazy {
|
|
||||||
compilation.packageJsonHandlers
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transient
|
@Transient
|
||||||
val packageJsonTaskHolder: TaskProvider<KotlinPackageJsonTask>? =
|
val packageJsonTaskHolder: TaskProvider<KotlinPackageJsonTask>? =
|
||||||
KotlinPackageJsonTask.create(compilation)
|
KotlinPackageJsonTask.create(compilation)
|
||||||
@@ -478,20 +474,25 @@ internal class KotlinCompilationNpmResolver(
|
|||||||
} else emptySet()
|
} else emptySet()
|
||||||
|
|
||||||
val allNpmDependencies = externalNpmDependencies + toolsNpmDependencies + dukatIfNecessary
|
val allNpmDependencies = externalNpmDependencies + toolsNpmDependencies + dukatIfNecessary
|
||||||
|
val packageJsonHandlers = if (compilationResolver.compilation != null) {
|
||||||
|
compilationResolver.compilation.packageJsonHandlers
|
||||||
|
} else {
|
||||||
|
compilationResolver.rootResolver.getPackageJsonHandlers(projectPath, compilationResolver.compilationDisambiguatedName)
|
||||||
|
}
|
||||||
|
|
||||||
val packageJson = packageJson(
|
val packageJson = packageJson(
|
||||||
compilationResolver.npmProject.name,
|
compilationResolver.npmProject.name,
|
||||||
compilationResolver.npmVersion,
|
compilationResolver.npmVersion,
|
||||||
compilationResolver.npmProject.main,
|
compilationResolver.npmProject.main,
|
||||||
allNpmDependencies,
|
allNpmDependencies,
|
||||||
compilationResolver.packageJsonHandlers
|
packageJsonHandlers
|
||||||
)
|
)
|
||||||
|
|
||||||
compositeDependencies.forEach {
|
compositeDependencies.forEach {
|
||||||
packageJson.dependencies[it.name] = it.version
|
packageJson.dependencies[it.name] = it.version
|
||||||
}
|
}
|
||||||
|
|
||||||
compilationResolver.packageJsonHandlers.forEach {
|
packageJsonHandlers.forEach {
|
||||||
it(packageJson)
|
it(packageJson)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+14
-8
@@ -133,14 +133,17 @@ internal class KotlinRootNpmResolver internal constructor(
|
|||||||
rootProject_.gradle.sharedServices.registerIfAbsent(
|
rootProject_.gradle.sharedServices.registerIfAbsent(
|
||||||
KotlinRootNpmResolverStateHolder::class.qualifiedName,
|
KotlinRootNpmResolverStateHolder::class.qualifiedName,
|
||||||
KotlinRootNpmResolverStateHolder::class.java
|
KotlinRootNpmResolverStateHolder::class.java
|
||||||
) {
|
) { service ->
|
||||||
it.parameters.plugins.set(plugins_)
|
service.parameters.plugins.set(plugins_)
|
||||||
it.parameters.projectResolvers.set(projectResolvers_)
|
service.parameters.projectResolvers.set(projectResolvers_)
|
||||||
it.parameters.packageManager.set(nodeJs_.packageManager)
|
service.parameters.packageManager.set(nodeJs_.packageManager)
|
||||||
it.parameters.yarnEnvironment.set(yarnEnvironment_?.get())
|
service.parameters.yarnEnvironment.set(yarnEnvironment_?.get())
|
||||||
it.parameters.npmEnvironment.set(npmEnvironment_?.get())
|
service.parameters.npmEnvironment.set(npmEnvironment_?.get())
|
||||||
it.parameters.yarnResolutions.set(yarnResolutions_?.get())
|
service.parameters.yarnResolutions.set(yarnResolutions_?.get())
|
||||||
it.parameters.taskRequirements.set(taskRequirements_)
|
service.parameters.taskRequirements.set(taskRequirements_)
|
||||||
|
service.parameters.packageJsonHandlers.set(compilations.associate { compilation ->
|
||||||
|
"${compilation.project.path}:${compilation.disambiguatedName}" to compilation.packageJsonHandlers
|
||||||
|
}.filter { it.value.isNotEmpty() })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -197,6 +200,9 @@ internal class KotlinRootNpmResolver internal constructor(
|
|||||||
val compilations: Collection<KotlinJsCompilation>
|
val compilations: Collection<KotlinJsCompilation>
|
||||||
get() = projectResolvers.values.flatMap { it.compilationResolvers.map { it.compilation } }
|
get() = projectResolvers.values.flatMap { it.compilationResolvers.map { it.compilation } }
|
||||||
|
|
||||||
|
internal fun getPackageJsonHandlers(projectPath: String, compilationDisambiguatedName: String): List<PackageJson.() -> Unit> =
|
||||||
|
resolverStateHolder.get().parameters.packageJsonHandlers.get()["$projectPath:$compilationDisambiguatedName"] ?: emptyList()
|
||||||
|
|
||||||
fun findDependentResolver(src: Project, target: Project): List<KotlinCompilationNpmResolver>? {
|
fun findDependentResolver(src: Project, target: Project): List<KotlinCompilationNpmResolver>? {
|
||||||
// todo: proper finding using KotlinTargetComponent.findUsageContext
|
// todo: proper finding using KotlinTargetComponent.findUsageContext
|
||||||
val targetResolver = this[target.path]
|
val targetResolver = this[target.path]
|
||||||
|
|||||||
+4
@@ -13,6 +13,7 @@ import org.gradle.api.services.BuildServiceParameters
|
|||||||
import org.jetbrains.kotlin.gradle.targets.js.nodejs.TasksRequirements
|
import org.jetbrains.kotlin.gradle.targets.js.nodejs.TasksRequirements
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmApi
|
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmApi
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmEnvironment
|
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmEnvironment
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.npm.plugins.RootResolverPlugin
|
import org.jetbrains.kotlin.gradle.targets.js.npm.plugins.RootResolverPlugin
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnEnv
|
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnEnv
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnResolution
|
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnResolution
|
||||||
@@ -27,6 +28,9 @@ internal abstract class KotlinRootNpmResolverStateHolder : BuildService<KotlinRo
|
|||||||
val npmEnvironment: Property<NpmEnvironment>
|
val npmEnvironment: Property<NpmEnvironment>
|
||||||
val yarnResolutions: ListProperty<YarnResolution>
|
val yarnResolutions: ListProperty<YarnResolution>
|
||||||
val taskRequirements: Property<TasksRequirements>
|
val taskRequirements: Property<TasksRequirements>
|
||||||
|
|
||||||
|
// pulled up from compilation resolver since it was failing with ClassNotFoundException on deserialization, see KT-49061
|
||||||
|
val packageJsonHandlers: MapProperty<String, List<PackageJson.() -> Unit>>
|
||||||
}
|
}
|
||||||
|
|
||||||
var initialized = false
|
var initialized = false
|
||||||
|
|||||||
Reference in New Issue
Block a user