From dd731da6d1ade17927643ba3ff47efb0876ab511 Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Wed, 30 May 2018 00:21:04 +0300 Subject: [PATCH] Make 'kotlinCompilerPluginClasspath' non-transitive Previous plugin resolution mechanism was only searching for exact artifact without transitive dependencies. The configuration allows resolving transitive dependencies, but it resolves stdlib which fails because the compiler loads plugins using parent last classloader. Non-transitivity can be removed after parent last classloader is removed. --- .../org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt index 53223d68305..68fa1770e91 100755 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt @@ -29,8 +29,7 @@ import org.jetbrains.kotlin.gradle.internal.* import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin.Companion.getKaptGeneratedClassesDir import org.jetbrains.kotlin.gradle.tasks.* import org.jetbrains.kotlin.gradle.utils.* -import org.jetbrains.kotlin.incremental.stackTraceStr -import org.jetbrains.kotlin.scripting.gradle.ScriptingGradleSubplugin +import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubplugin import java.io.File import java.net.URL import java.util.* @@ -338,7 +337,10 @@ internal abstract class AbstractKotlinPlugin( internal abstract fun buildSourceSetProcessor(project: Project, javaBasePlugin: JavaBasePlugin, sourceSet: SourceSet, kotlinPluginVersion: String): KotlinSourceSetProcessor<*> override fun apply(project: Project) { - project.configurations.create(PLUGIN_CLASSPATH_CONFIGURATION_NAME) + project.configurations.create(PLUGIN_CLASSPATH_CONFIGURATION_NAME).apply { + // todo: Consider removing if org.jetbrains.kotlin.cli.jvm.plugins.PluginCliParser stops using parent last classloader + isTransitive = false + } val javaBasePlugin = project.plugins.apply(JavaBasePlugin::class.java) val javaPluginConvention = project.convention.getPlugin(JavaPluginConvention::class.java)