From c42b3b8ff8b27e4be91a9a1f31d2a493b2db8d65 Mon Sep 17 00:00:00 2001 From: Ivan Gavrilovic Date: Fri, 2 Nov 2018 18:07:43 +0000 Subject: [PATCH] Do not resolve configuration for scripting Gradle plugin Avoid resolving kotlinScriptDef configurations during configuration phase. Also, make task creation lazy. #KT-27160 fixed --- .../internal/ScriptingGradleSubplugin.kt | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/scripting/internal/ScriptingGradleSubplugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/scripting/internal/ScriptingGradleSubplugin.kt index ea6d1893f14..1feee221136 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/scripting/internal/ScriptingGradleSubplugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/scripting/internal/ScriptingGradleSubplugin.kt @@ -46,19 +46,19 @@ class ScriptingGradleSubplugin : Plugin { project.tasks.withType(KotlinCompile::class.java) { task -> if (task !is KaptGenerateStubsTask) { - val configuration = project.configurations.findByName(getConfigurationName(task.sourceSetName)) - if (configuration?.isEmpty == false) { - javaPluginConvention.sourceSets.findByName(task.sourceSetName)?.let { sourceSet -> - val extensionsTask = - project.tasks.create( - "discover${task.sourceSetName.capitalize()}ScriptsExtensions", - DiscoverScriptExtensionsTask::class.java - ) - extensionsTask.sourceSet = sourceSet - extensionsTask.discoveryClasspathConfiguration = configuration - extensionsTask.kotlinCompile = task - task.dependsOn.add(extensionsTask) - } + javaPluginConvention.sourceSets.findByName(task.sourceSetName)?.let { sourceSet -> + project.tasks.register( + "discover${task.sourceSetName.capitalize()}ScriptsExtensions", + DiscoverScriptExtensionsTask::class.java + ) + .also { provider -> task.dependsOn(provider) } + .configure { extensionsTask -> + extensionsTask.sourceSet = sourceSet + extensionsTask.discoveryClasspathConfiguration = + project.configurations.findByName(getConfigurationName(task.sourceSetName)) + extensionsTask.kotlinCompile = task + task.dependsOn.add(extensionsTask) + } } } } @@ -76,7 +76,8 @@ open class DiscoverScriptExtensionsTask : DefaultTask() { @get:InputFiles @get:Classpath - internal var discoveryClasspathConfiguration: Configuration by Delegates.notNull() + @get:Optional + internal var discoveryClasspathConfiguration: Configuration? = null @get:Internal internal var kotlinCompile: KotlinCompile by Delegates.notNull() @@ -87,7 +88,7 @@ open class DiscoverScriptExtensionsTask : DefaultTask() { @TaskAction @Suppress("unused") fun findKnownScriptExtensions() { - val scriptingClasspath = discoveryClasspathConfiguration.files.takeIf { it.isNotEmpty() } ?: return + val scriptingClasspath = discoveryClasspathConfiguration?.files?.takeIf { it.isNotEmpty() } ?: return val definitions = ScriptDefinitionsFromClasspathDiscoverySource(