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:
committed by
Yan Zhulanow
parent
2c102ecd57
commit
f60bf5cb97
+41
-4
@@ -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() {
|
||||
|
||||
+29
@@ -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"
|
||||
}
|
||||
+1
@@ -0,0 +1 @@
|
||||
org.gradle.jvmargs=-XX:MaxPermSize=512m
|
||||
+9
@@ -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>
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
package demo
|
||||
|
||||
class Dummy
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
package demo
|
||||
|
||||
open class Greeter(val greeting: String)
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
package demo
|
||||
|
||||
fun dummyFun() {}
|
||||
+1
@@ -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) }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user