[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 packageJsonHandlers by lazy {
|
||||
compilation.packageJsonHandlers
|
||||
}
|
||||
|
||||
@Transient
|
||||
val packageJsonTaskHolder: TaskProvider<KotlinPackageJsonTask>? =
|
||||
KotlinPackageJsonTask.create(compilation)
|
||||
@@ -478,20 +474,25 @@ internal class KotlinCompilationNpmResolver(
|
||||
} else emptySet()
|
||||
|
||||
val allNpmDependencies = externalNpmDependencies + toolsNpmDependencies + dukatIfNecessary
|
||||
val packageJsonHandlers = if (compilationResolver.compilation != null) {
|
||||
compilationResolver.compilation.packageJsonHandlers
|
||||
} else {
|
||||
compilationResolver.rootResolver.getPackageJsonHandlers(projectPath, compilationResolver.compilationDisambiguatedName)
|
||||
}
|
||||
|
||||
val packageJson = packageJson(
|
||||
compilationResolver.npmProject.name,
|
||||
compilationResolver.npmVersion,
|
||||
compilationResolver.npmProject.main,
|
||||
allNpmDependencies,
|
||||
compilationResolver.packageJsonHandlers
|
||||
packageJsonHandlers
|
||||
)
|
||||
|
||||
compositeDependencies.forEach {
|
||||
packageJson.dependencies[it.name] = it.version
|
||||
}
|
||||
|
||||
compilationResolver.packageJsonHandlers.forEach {
|
||||
packageJsonHandlers.forEach {
|
||||
it(packageJson)
|
||||
}
|
||||
|
||||
|
||||
+14
-8
@@ -133,14 +133,17 @@ internal class KotlinRootNpmResolver internal constructor(
|
||||
rootProject_.gradle.sharedServices.registerIfAbsent(
|
||||
KotlinRootNpmResolverStateHolder::class.qualifiedName,
|
||||
KotlinRootNpmResolverStateHolder::class.java
|
||||
) {
|
||||
it.parameters.plugins.set(plugins_)
|
||||
it.parameters.projectResolvers.set(projectResolvers_)
|
||||
it.parameters.packageManager.set(nodeJs_.packageManager)
|
||||
it.parameters.yarnEnvironment.set(yarnEnvironment_?.get())
|
||||
it.parameters.npmEnvironment.set(npmEnvironment_?.get())
|
||||
it.parameters.yarnResolutions.set(yarnResolutions_?.get())
|
||||
it.parameters.taskRequirements.set(taskRequirements_)
|
||||
) { service ->
|
||||
service.parameters.plugins.set(plugins_)
|
||||
service.parameters.projectResolvers.set(projectResolvers_)
|
||||
service.parameters.packageManager.set(nodeJs_.packageManager)
|
||||
service.parameters.yarnEnvironment.set(yarnEnvironment_?.get())
|
||||
service.parameters.npmEnvironment.set(npmEnvironment_?.get())
|
||||
service.parameters.yarnResolutions.set(yarnResolutions_?.get())
|
||||
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>
|
||||
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>? {
|
||||
// todo: proper finding using KotlinTargetComponent.findUsageContext
|
||||
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.npm.NpmApi
|
||||
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.yarn.YarnEnv
|
||||
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnResolution
|
||||
@@ -27,6 +28,9 @@ internal abstract class KotlinRootNpmResolverStateHolder : BuildService<KotlinRo
|
||||
val npmEnvironment: Property<NpmEnvironment>
|
||||
val yarnResolutions: ListProperty<YarnResolution>
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user