From e3c6f32b503a104e0c17169fb75576e207877eda Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Wed, 10 Jun 2015 16:24:34 +0300 Subject: [PATCH] Gradle: Subplugin loading process is unrelated to kapt --- .../kotlin/gradle/plugin/KotlinPlugin.kt | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 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 bb1db74584d..3889ef217d1 100644 --- 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 @@ -161,13 +161,16 @@ class Kotlin2JvmSourceSetProcessor( kotlinDirSet?.srcDir(dir) } + val subpluginEnvironment = loadSubplugins(project) + subpluginEnvironment.addSubpluginArguments(project, kotlinTask) + if (aptConfiguration.getDependencies().size() > 1 && javaTask is JavaCompile) { val (aptOutputDir, aptWorkingDir) = project.getAptDirsForSourceSet(kotlinTask, sourceSetName) val kaptManager = AnnotationProcessingManager(kotlinTask, javaTask, sourceSetName, aptConfiguration.resolve(), aptOutputDir, aptWorkingDir, tasksProvider.tasksLoader) - project.initKapt(kotlinTask, javaTask, kaptManager, sourceSetName, kotlinDestinationDir) { + project.initKapt(kotlinTask, javaTask, kaptManager, sourceSetName, kotlinDestinationDir, subpluginEnvironment) { createKotlinCompileTask(it) } } @@ -360,7 +363,7 @@ open class KotlinAndroidPlugin [Inject] (val scriptHandler: ScriptHandler, val t val logger = project.getLogger() val kotlinOptions = getExtension(androidExt, "kotlinOptions") - val subpluginEnvironment = loadSubplugins(project, logger) + val subpluginEnvironment = loadSubplugins(project) for (variantData in variantDataList) { val variantDataName = variantData.getName() @@ -424,6 +427,8 @@ open class KotlinAndroidPlugin [Inject] (val scriptHandler: ScriptHandler, val t } } + subpluginEnvironment.addSubpluginArguments(project, kotlinTask) + kotlinTask doFirst { val androidRT = project.files(AndroidGradleWrapper.getRuntimeJars(androidPlugin, androidExt)) val fullClasspath = (javaTask.getClasspath() + androidRT) - project.files(kotlinTask.property("kotlinDestinationDir")) @@ -466,7 +471,7 @@ open class KotlinAndroidPlugin [Inject] (val scriptHandler: ScriptHandler, val t } -private fun loadSubplugins(project: Project, logger: Logger): SubpluginEnvironment { +private fun loadSubplugins(project: Project): SubpluginEnvironment { try { val subplugins = ServiceLoader.load( javaClass(), project.getBuildscript().getClassLoader()).toList() @@ -577,15 +582,14 @@ private fun Project.initKapt( kaptManager: AnnotationProcessingManager, variantName: String, kotlinOutputDir: File, - subpluginEnvironment: SubpluginEnvironment? = null, + subpluginEnvironment: SubpluginEnvironment, taskFactory: (suffix: String) -> AbstractCompile ) { val kaptExtension = getExtensions().kapt - val environment = subpluginEnvironment ?: loadSubplugins(this, getLogger()) val kotlinAfterJavaTask: AbstractCompile? if (kaptExtension.generateStubs) { - kotlinAfterJavaTask = createKotlinAfterJavaTask(kotlinTask, javaTask, kotlinOutputDir, taskFactory) + kotlinAfterJavaTask = createKotlinAfterJavaTask(javaTask, kotlinOutputDir, taskFactory) kotlinTask.getLogger().kotlinDebug("kapt: Using class file stubs") @@ -598,11 +602,10 @@ private fun Project.initKapt( kotlinAfterJavaTask.source(kotlinTask.getSource()) } - environment.addSubpluginArguments(this, kotlinAfterJavaTask) + subpluginEnvironment.addSubpluginArguments(this, kotlinAfterJavaTask) } else { kotlinAfterJavaTask = null kotlinTask.getLogger().kotlinDebug("kapt: Class file stubs are not used") - environment.addSubpluginArguments(this, kotlinTask) } javaTask.doFirst { @@ -618,7 +621,6 @@ private fun Project.initKapt( } private fun Project.createKotlinAfterJavaTask( - kotlinTask: AbstractCompile, javaTask: AbstractCompile, kotlinDestinationDir: File, taskFactory: (suffix: String) -> AbstractCompile