Gradle: Subplugin loading process is unrelated to kapt

This commit is contained in:
Yan Zhulanow
2015-06-10 16:24:34 +03:00
parent 853cfdb70b
commit e3c6f32b50
@@ -161,13 +161,16 @@ class Kotlin2JvmSourceSetProcessor(
kotlinDirSet?.srcDir(dir) kotlinDirSet?.srcDir(dir)
} }
val subpluginEnvironment = loadSubplugins(project)
subpluginEnvironment.addSubpluginArguments(project, kotlinTask)
if (aptConfiguration.getDependencies().size() > 1 && javaTask is JavaCompile) { if (aptConfiguration.getDependencies().size() > 1 && javaTask is JavaCompile) {
val (aptOutputDir, aptWorkingDir) = project.getAptDirsForSourceSet(kotlinTask, sourceSetName) val (aptOutputDir, aptWorkingDir) = project.getAptDirsForSourceSet(kotlinTask, sourceSetName)
val kaptManager = AnnotationProcessingManager(kotlinTask, javaTask, sourceSetName, val kaptManager = AnnotationProcessingManager(kotlinTask, javaTask, sourceSetName,
aptConfiguration.resolve(), aptOutputDir, aptWorkingDir, tasksProvider.tasksLoader) aptConfiguration.resolve(), aptOutputDir, aptWorkingDir, tasksProvider.tasksLoader)
project.initKapt(kotlinTask, javaTask, kaptManager, sourceSetName, kotlinDestinationDir) { project.initKapt(kotlinTask, javaTask, kaptManager, sourceSetName, kotlinDestinationDir, subpluginEnvironment) {
createKotlinCompileTask(it) createKotlinCompileTask(it)
} }
} }
@@ -360,7 +363,7 @@ open class KotlinAndroidPlugin [Inject] (val scriptHandler: ScriptHandler, val t
val logger = project.getLogger() val logger = project.getLogger()
val kotlinOptions = getExtension<Any?>(androidExt, "kotlinOptions") val kotlinOptions = getExtension<Any?>(androidExt, "kotlinOptions")
val subpluginEnvironment = loadSubplugins(project, logger) val subpluginEnvironment = loadSubplugins(project)
for (variantData in variantDataList) { for (variantData in variantDataList) {
val variantDataName = variantData.getName() val variantDataName = variantData.getName()
@@ -424,6 +427,8 @@ open class KotlinAndroidPlugin [Inject] (val scriptHandler: ScriptHandler, val t
} }
} }
subpluginEnvironment.addSubpluginArguments(project, kotlinTask)
kotlinTask doFirst { kotlinTask doFirst {
val androidRT = project.files(AndroidGradleWrapper.getRuntimeJars(androidPlugin, androidExt)) val androidRT = project.files(AndroidGradleWrapper.getRuntimeJars(androidPlugin, androidExt))
val fullClasspath = (javaTask.getClasspath() + androidRT) - project.files(kotlinTask.property("kotlinDestinationDir")) 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 { try {
val subplugins = ServiceLoader.load( val subplugins = ServiceLoader.load(
javaClass<KotlinGradleSubplugin>(), project.getBuildscript().getClassLoader()).toList() javaClass<KotlinGradleSubplugin>(), project.getBuildscript().getClassLoader()).toList()
@@ -577,15 +582,14 @@ private fun Project.initKapt(
kaptManager: AnnotationProcessingManager, kaptManager: AnnotationProcessingManager,
variantName: String, variantName: String,
kotlinOutputDir: File, kotlinOutputDir: File,
subpluginEnvironment: SubpluginEnvironment? = null, subpluginEnvironment: SubpluginEnvironment,
taskFactory: (suffix: String) -> AbstractCompile taskFactory: (suffix: String) -> AbstractCompile
) { ) {
val kaptExtension = getExtensions().kapt val kaptExtension = getExtensions().kapt
val environment = subpluginEnvironment ?: loadSubplugins(this, getLogger())
val kotlinAfterJavaTask: AbstractCompile? val kotlinAfterJavaTask: AbstractCompile?
if (kaptExtension.generateStubs) { if (kaptExtension.generateStubs) {
kotlinAfterJavaTask = createKotlinAfterJavaTask(kotlinTask, javaTask, kotlinOutputDir, taskFactory) kotlinAfterJavaTask = createKotlinAfterJavaTask(javaTask, kotlinOutputDir, taskFactory)
kotlinTask.getLogger().kotlinDebug("kapt: Using class file stubs") kotlinTask.getLogger().kotlinDebug("kapt: Using class file stubs")
@@ -598,11 +602,10 @@ private fun Project.initKapt(
kotlinAfterJavaTask.source(kotlinTask.getSource()) kotlinAfterJavaTask.source(kotlinTask.getSource())
} }
environment.addSubpluginArguments(this, kotlinAfterJavaTask) subpluginEnvironment.addSubpluginArguments(this, kotlinAfterJavaTask)
} else { } else {
kotlinAfterJavaTask = null kotlinAfterJavaTask = null
kotlinTask.getLogger().kotlinDebug("kapt: Class file stubs are not used") kotlinTask.getLogger().kotlinDebug("kapt: Class file stubs are not used")
environment.addSubpluginArguments(this, kotlinTask)
} }
javaTask.doFirst { javaTask.doFirst {
@@ -618,7 +621,6 @@ private fun Project.initKapt(
} }
private fun Project.createKotlinAfterJavaTask( private fun Project.createKotlinAfterJavaTask(
kotlinTask: AbstractCompile,
javaTask: AbstractCompile, javaTask: AbstractCompile,
kotlinDestinationDir: File, kotlinDestinationDir: File,
taskFactory: (suffix: String) -> AbstractCompile taskFactory: (suffix: String) -> AbstractCompile