From a0fb5c31eaab7ca1f40e0b78720d9db26dae6e9f Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Sun, 25 Apr 2021 23:06:17 +0200 Subject: [PATCH] Don't configure runtimeDependencyFiles during variant instantiation --- .../gradle/plugin/mpp/pm20/abstractVariants.kt | 10 ++++++---- .../org/jetbrains/kotlin/gradle/tasks/Tasks.kt | 16 ++++------------ 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/abstractVariants.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/abstractVariants.kt index a17f2c8c5b4..8b9bd5b4d53 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/abstractVariants.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/abstractVariants.kt @@ -98,10 +98,12 @@ abstract class KotlinGradleVariantWithRuntimeInternal( override lateinit var runtimeDependencyFiles: FileCollection - override val runtimeFiles: ConfigurableFileCollection = project.files( - { compilationOutputs.allOutputs }, - { runtimeDependencyFiles } - ) + override val runtimeFiles: ConfigurableFileCollection by lazy { + project.files( + { compilationOutputs.allOutputs }, + { runtimeDependencyFiles } + ) + } // TODO generalize exposing outputs: what if a variant has more than one such configurations or none? override val runtimeElementsConfigurationName: String diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index 0776b89f787..2cefe9ff49a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -210,15 +210,6 @@ abstract class AbstractKotlinCompile : AbstractKotl protected val multiModuleICSettings: MultiModuleICSettings get() = MultiModuleICSettings(buildHistoryFile.get().asFile, useModuleDetection.get()) - - /* - @get:InputFiles - @get:Classpath - open val pluginClasspath: FileCollection by project.provider { - (taskData.compilation as? KotlinCompilation<*>?)?.pluginConfigurationName?.let(project.configurations::getByName) - ?: project.files() - } - */ @get:InputFiles @get:Classpath open val pluginClasspath: ConfigurableFileCollection = objects.fileCollection() @@ -234,6 +225,7 @@ abstract class AbstractKotlinCompile : AbstractKotl */ @get:Optional @get:Nested + // TODO: replace with objects.property and introduce task configurator internal var kotlinPluginData: Provider? = null // Input is needed to force rebuild even if source files are not changed @@ -385,9 +377,9 @@ open class KotlinCompileArgumentsProvider = taskProvider.coroutines val logger: Logger = taskProvider.logger val isMultiplatform: Boolean = taskProvider.multiPlatformEnabled.get() - val pluginData = taskProvider.kotlinPluginData?.orNull - val pluginClasspath: FileCollection = taskProvider.pluginClasspath // TODO: Add pluginData - val pluginOptions: CompilerPluginOptions = taskProvider.pluginOptions // TODO: Add pluginData + private val pluginData = taskProvider.kotlinPluginData?.orNull + val pluginClasspath: FileCollection = listOfNotNull(taskProvider.pluginClasspath, pluginData?.classpath).reduce(FileCollection::plus) + val pluginOptions: CompilerPluginOptions = listOfNotNull(taskProvider.pluginOptions, pluginData?.options).reduce(CompilerPluginOptions::plus) } class KotlinJvmCompilerArgumentsProvider