From 54024ccb09643d0593101d3617df479912d975f5 Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Fri, 17 Jun 2022 15:55:57 +0200 Subject: [PATCH] [Gradle] Refactor ResolvedDependencyGraph to instantiate via secondary constructor --- .../targets/native/tasks/KotlinNativeTasks.kt | 4 ++-- .../kotlin/gradle/utils/configurations.kt | 15 ++++++++------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt index 0266ec1c18c..5c074c6bd5b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt @@ -561,7 +561,7 @@ constructor( val exportLibraries: FileCollection get() = exportLibrariesResolvedGraph?.files ?: objectFactory.fileCollection() private val exportLibrariesResolvedGraph = if (binary is AbstractNativeLibrary) { - ResolvedDependencyGraph.fromConfiguration(project.configurations.getByName(binary.exportConfigurationName)) + ResolvedDependencyGraph(project.configurations.getByName(binary.exportConfigurationName)) } else { null } @@ -640,7 +640,7 @@ constructor( @get:Internal internal abstract val konanPropertiesService: Property - private val resolvedDependencyGraph = ResolvedDependencyGraph.fromConfiguration( + private val resolvedDependencyGraph = ResolvedDependencyGraph( project.configurations.getByName(compilation.compileDependencyConfigurationName) ) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/configurations.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/configurations.kt index e1720ade1eb..9808c6699ef 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/configurations.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/configurations.kt @@ -31,6 +31,14 @@ private constructor( private val resolvedComponentsRootProvider: Lazy, private val artifactCollection: ArtifactCollection ) { + constructor(configuration: Configuration) : this( + // Calling resolutionResult doesn't actually trigger resolution. But accessing its root ResolvedComponentResult + // via ResolutionResult::root does. ResolutionResult can't be serialised for Configuration Cache + // but ResolvedComponentResult can. Wrapping it in `lazy` makes it resolve upon serialisation. + resolvedComponentsRootProvider = configuration.incoming.resolutionResult.let { rr -> lazy { rr.root } }, + artifactCollection = configuration.incoming.artifacts // lazy ArtifactCollection + ) + val root get() = resolvedComponentsRootProvider.value val files: FileCollection get() = artifactCollection.artifactFiles val artifacts get() = artifactCollection.artifacts @@ -52,11 +60,4 @@ private constructor( val componentId = dependency.selected.id return artifactsByComponentId[componentId] ?: emptyList() } - - companion object { - fun fromConfiguration(configuration: Configuration) = ResolvedDependencyGraph( - resolvedComponentsRootProvider = configuration.incoming.resolutionResult.let { rr -> lazy { rr.root } }, - artifactCollection = configuration.incoming.artifacts - ) - } } \ No newline at end of file