KT-31127: register only generated Java sources to AGP

When adding generated Java sources to AGP using Variant API,
add only Java sources. This was already done in
a6ae4494167c9d4cca23995457c59fb2daedad39 for Java projects, and this
commit fixes the same issue for Android projects.

Test: Kapt3Android33IT.testKotlinProcessorUsingFiler
This commit is contained in:
Ivan Gavrilovic
2019-06-13 22:08:31 +09:00
committed by Yan Zhulanow
parent 2c102ecd57
commit f60bf5cb97
8 changed files with 90 additions and 4 deletions
@@ -1,11 +1,10 @@
package org.jetbrains.kotlin.gradle
import org.jetbrains.kotlin.gradle.util.AGPVersion
import org.jetbrains.kotlin.gradle.util.checkedReplace
import org.jetbrains.kotlin.gradle.util.getFileByName
import org.jetbrains.kotlin.gradle.util.modify
import org.jetbrains.kotlin.gradle.util.*
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.junit.Assert
import org.junit.Test
import java.io.File
class Kapt3WorkersAndroid32IT : Kapt3Android32IT() {
override fun kaptOptions(): KaptOptions =
@@ -36,6 +35,44 @@ open class Kapt3Android33IT : Kapt3AndroidIT() {
assertFileExists("build/tmp/kotlin-classes/debug/test/androidx/navigation/StartFragmentKt.class")
}
}
/** Regression test for Android projects and KT-31127. */
@Test
fun testKotlinProcessorUsingFiler() {
val project = Project("AndroidLibraryKotlinProject").apply {
setupWorkingDir()
gradleBuildScript().appendText(
"""
apply plugin: 'kotlin-kapt'
android {
defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = false
libraryVariants.all {
it.generateBuildConfig.enabled = false
}
}
dependencies {
kapt "org.jetbrains.kotlin:annotation-processor-example:${"$"}kotlin_version"
implementation "org.jetbrains.kotlin:annotation-processor-example:${"$"}kotlin_version"
}
""".trimIndent()
)
// The test must not contain any java sources in order to detect the issue.
Assert.assertEquals(emptyList<File>(), projectDir.allJavaFiles().toList())
projectDir.getFileByName("Dummy.kt").modify {
it.replace("class Dummy", "@example.KotlinFilerGenerated class Dummy")
}
}
project.build("assembleDebug") {
assertSuccessful()
assertFileExists("build/generated/source/kapt/debug/demo/DummyGenerated.kt")
assertTasksExecuted(":compileDebugKotlin")
assertTasksSkipped(":compileDebugJavaWithJavac")
}
}
}
class Kapt3Android31IT : Kapt3AndroidIT() {
@@ -0,0 +1,29 @@
buildscript {
repositories {
mavenLocal()
maven { url 'https://maven.google.com' }
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath('com.android.tools.build:gradle:' + android_tools_version)
}
}
repositories {
mavenLocal()
maven { url 'https://maven.google.com' }
jcenter()
}
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
android {
compileSdkVersion 23
buildToolsVersion "25.0.2"
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.jetbrains.kotlin.gradle.test.android.libalfa"
android:versionCode="1"
android:versionName="1.0" >
<application/>
</manifest>
@@ -0,0 +1,3 @@
package demo
open class Greeter(val greeting: String)
@@ -191,6 +191,7 @@ class Android25ProjectHandler(
javaTask: AbstractCompile
) {
val kaptSourceOutput = project.fileTree(kaptTask.destinationDir).builtBy(kaptTask)
kaptSourceOutput.include("**/*.java")
variantData.registerExternalAptJavaOutput(kaptSourceOutput)
variantData.dataBindingDependencyArtifactsIfSupported?.let { kaptTask.dependsOn(it) }
}