Do not resolve configuration for scripting Gradle plugin

Avoid resolving kotlinScriptDef configurations during
configuration phase. Also, make task creation lazy.

   #KT-27160 fixed
This commit is contained in:
Ivan Gavrilovic
2018-11-02 18:07:43 +00:00
committed by Alexey Tsvetkov
parent 22fa9b6b92
commit c42b3b8ff8
@@ -46,19 +46,19 @@ class ScriptingGradleSubplugin : Plugin<Project> {
project.tasks.withType(KotlinCompile::class.java) { task -> project.tasks.withType(KotlinCompile::class.java) { task ->
if (task !is KaptGenerateStubsTask) { if (task !is KaptGenerateStubsTask) {
val configuration = project.configurations.findByName(getConfigurationName(task.sourceSetName)) javaPluginConvention.sourceSets.findByName(task.sourceSetName)?.let { sourceSet ->
if (configuration?.isEmpty == false) { project.tasks.register(
javaPluginConvention.sourceSets.findByName(task.sourceSetName)?.let { sourceSet -> "discover${task.sourceSetName.capitalize()}ScriptsExtensions",
val extensionsTask = DiscoverScriptExtensionsTask::class.java
project.tasks.create( )
"discover${task.sourceSetName.capitalize()}ScriptsExtensions", .also { provider -> task.dependsOn(provider) }
DiscoverScriptExtensionsTask::class.java .configure { extensionsTask ->
) extensionsTask.sourceSet = sourceSet
extensionsTask.sourceSet = sourceSet extensionsTask.discoveryClasspathConfiguration =
extensionsTask.discoveryClasspathConfiguration = configuration project.configurations.findByName(getConfigurationName(task.sourceSetName))
extensionsTask.kotlinCompile = task extensionsTask.kotlinCompile = task
task.dependsOn.add(extensionsTask) task.dependsOn.add(extensionsTask)
} }
} }
} }
} }
@@ -76,7 +76,8 @@ open class DiscoverScriptExtensionsTask : DefaultTask() {
@get:InputFiles @get:InputFiles
@get:Classpath @get:Classpath
internal var discoveryClasspathConfiguration: Configuration by Delegates.notNull() @get:Optional
internal var discoveryClasspathConfiguration: Configuration? = null
@get:Internal @get:Internal
internal var kotlinCompile: KotlinCompile by Delegates.notNull() internal var kotlinCompile: KotlinCompile by Delegates.notNull()
@@ -87,7 +88,7 @@ open class DiscoverScriptExtensionsTask : DefaultTask() {
@TaskAction @TaskAction
@Suppress("unused") @Suppress("unused")
fun findKnownScriptExtensions() { fun findKnownScriptExtensions() {
val scriptingClasspath = discoveryClasspathConfiguration.files.takeIf { it.isNotEmpty() } ?: return val scriptingClasspath = discoveryClasspathConfiguration?.files?.takeIf { it.isNotEmpty() } ?: return
val definitions = val definitions =
ScriptDefinitionsFromClasspathDiscoverySource( ScriptDefinitionsFromClasspathDiscoverySource(