Kapt: Fix extending configurations in Gradle, create "main" configuration if it does not exist yet. Also fix checking kapt configuration dependencies, use allDependencies instead (KT-15814)

This commit is contained in:
Yan Zhulanow
2017-01-26 01:55:34 +09:00
parent 3b4a8e0f33
commit bb0b70d27b
12 changed files with 193 additions and 3 deletions
@@ -124,7 +124,7 @@ internal class Kotlin2JvmSourceSetProcessor(
var kotlinAfterJavaTask: KotlinCompile? = null
if (aptConfiguration.dependencies.size > 1 && !Kapt3GradleSubplugin.isEnabled(project)) {
if (!Kapt3GradleSubplugin.isEnabled(project) && aptConfiguration.allDependencies.size > 1) {
javaTask.dependsOn(aptConfiguration.buildDependencies)
val (aptOutputDir, aptWorkingDir) = project.getAptDirsForSourceSet(sourceSetName)
@@ -388,7 +388,7 @@ internal open class KotlinAndroidPlugin(
for (provider in variantData.sourceProviders) {
val aptConfiguration = aptConfigurations[(provider as AndroidSourceSet).name]
// Ignore if there's only an annotation processor wrapper in dependencies (added by default)
if (aptConfiguration != null && aptConfiguration.dependencies.size > 1) {
if (aptConfiguration != null && aptConfiguration.allDependencies.size > 1) {
javaTask.dependsOn(aptConfiguration.buildDependencies)
aptFiles.addAll(aptConfiguration.resolve())
}
@@ -609,6 +609,7 @@ private fun Project.getAptDirsForSourceSet(sourceSetName: String): Pair<File, Fi
private fun Project.createAptConfiguration(sourceSetName: String, kotlinPluginVersion: String): Configuration {
val aptConfigurationName = Kapt3KotlinGradleSubplugin.getKaptConfigurationName(sourceSetName)
configurations.findByName(aptConfigurationName)?.let { return it }
val aptConfiguration = configurations.create(aptConfigurationName)
// Add base kotlin-annotation-processing artifact for the main kapt configuration,
@@ -617,7 +618,10 @@ private fun Project.createAptConfiguration(sourceSetName: String, kotlinPluginVe
val kotlinAnnotationProcessingDep = "org.jetbrains.kotlin:kotlin-annotation-processing:$kotlinPluginVersion"
aptConfiguration.dependencies.add(dependencies.create(kotlinAnnotationProcessingDep))
} else {
Kapt3KotlinGradleSubplugin.findMainKaptConfiguration(this)?.let { aptConfiguration.extendsFrom(it) }
// "main" configuration can be created after some other. We should handle this case
val mainConfiguration = Kapt3KotlinGradleSubplugin.findMainKaptConfiguration(this)
?: createAptConfiguration("main", kotlinPluginVersion)
aptConfiguration.extendsFrom(mainConfiguration)
}
return aptConfiguration