Kapt: Forbid using the deprecated (original) kapt

This commit is contained in:
Yan Zhulanow
2018-02-07 20:59:08 +03:00
parent bdd7ab3a09
commit ba61a93dc7
8 changed files with 53 additions and 19 deletions
@@ -29,6 +29,21 @@ abstract class BaseGradleIT {
workingDir.deleteRecursively()
}
fun Project.allowOriginalKapt() {
if (!projectDir.exists()) {
setupWorkingDir()
}
val allowOriginalKaptOption = "allow.original.kapt = true"
val gradleProperties = File(projectDir, "gradle.properties")
if (gradleProperties.exists()) {
gradleProperties.appendText("\n$allowOriginalKaptOption")
} else {
gradleProperties.writeText(allowOriginalKaptOption)
}
}
// https://developer.android.com/studio/intro/update.html#download-with-gradle
fun acceptAndroidSdkLicenses() = defaultBuildOptions().androidHome?.let {
val sdkLicenses = File(it, "licenses")
@@ -15,6 +15,7 @@ class KaptIT: BaseGradleIT() {
@Test
fun testSimple() {
val project = Project("kaptSimple", GRADLE_VERSION)
project.allowOriginalKapt()
project.build("build") {
assertSuccessful()
@@ -43,6 +44,7 @@ class KaptIT: BaseGradleIT() {
@Test
fun testEnumConstructor() {
val project = Project("kaptEnumConstructor", GRADLE_VERSION)
project.allowOriginalKapt()
project.build("build") {
assertSuccessful()
@@ -59,6 +61,7 @@ class KaptIT: BaseGradleIT() {
@Test
fun testStubs() {
val project = Project("kaptStubs", GRADLE_VERSION)
project.allowOriginalKapt()
project.build("build") {
assertSuccessful()
@@ -84,7 +87,7 @@ class KaptIT: BaseGradleIT() {
@Test
fun testStubsWithoutJava() {
val project = Project("kaptStubs", GRADLE_VERSION)
project.setupWorkingDir()
project.allowOriginalKapt()
project.projectDir.allJavaFiles().forEach { it.delete() }
project.build("build") {
@@ -110,6 +113,7 @@ class KaptIT: BaseGradleIT() {
private fun doTestIncrementalBuild(projectName: String, compileTasks: Array<String>) {
val compileTasksUpToDate = compileTasks.map { it + " UP-TO-DATE" }.toTypedArray()
val project = Project(projectName, "2.10")
project.allowOriginalKapt()
project.build("build") {
assertSuccessful()
@@ -145,7 +149,10 @@ class KaptIT: BaseGradleIT() {
@Test
fun testArguments() {
Project("kaptArguments", GRADLE_VERSION).build("build") {
val project = Project("kaptArguments", GRADLE_VERSION)
project.allowOriginalKapt()
project.build("build") {
assertSuccessful()
assertContains("kapt: Using class file stubs")
assertContains(":compileKotlin")
@@ -159,7 +166,10 @@ class KaptIT: BaseGradleIT() {
@Test
fun testInheritedAnnotations() {
Project("kaptInheritedAnnotations", GRADLE_VERSION).build("build") {
val project = Project("kaptInheritedAnnotations", GRADLE_VERSION)
project.allowOriginalKapt()
project.build("build") {
assertSuccessful()
assertFileExists("build/generated/source/kapt/main/example/TestClassGenerated.java")
assertFileExists("build/generated/source/kapt/main/example/AncestorClassGenerated.java")
@@ -170,7 +180,10 @@ class KaptIT: BaseGradleIT() {
@Test
fun testOutputKotlinCode() {
Project("kaptOutputKotlinCode", GRADLE_VERSION).build("build") {
val project = Project("kaptOutputKotlinCode", GRADLE_VERSION)
project.allowOriginalKapt()
project.build("build") {
assertSuccessful()
assertContains("kapt: Using class file stubs")
assertContains(":compileKotlin")
@@ -186,7 +199,9 @@ class KaptIT: BaseGradleIT() {
@Test
fun testInternalUserIsModifiedStubsIC() {
val options = defaultBuildOptions().copy(incremental = true)
val project = Project("kaptStubs", GRADLE_VERSION)
project.allowOriginalKapt()
project.build("build", options = options) {
assertSuccessful()
@@ -206,7 +221,9 @@ class KaptIT: BaseGradleIT() {
@Test
fun testKotlinCompilerNotCalledStubsIC() {
val options = defaultBuildOptions().copy(incremental = true)
val project = Project("kaptStubs", GRADLE_VERSION)
project.allowOriginalKapt()
project.build("build", options = options) {
assertSuccessful()
@@ -37,6 +37,7 @@ abstract class KaptIncrementalBaseIT(val shouldUseStubs: Boolean, val useKapt3:
if (useKapt3) {
buildGradle.modify { it.replace(APPLY_KAPT3_PLUGIN_PLACEHOLDER, APPLY_KAPT3_PLUGIN) }
allowOriginalKapt()
}
}
@@ -13,6 +13,7 @@ buildscript {
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android-extensions'
android {
@@ -48,10 +49,6 @@ dependencies {
provided 'org.glassfish:javax.annotation:10.0-b28'
}
kapt {
generateStubs = true
}
androidExtensions {
experimental = true
}
@@ -1,5 +1,6 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
dependencies {
compile "frankiesardo:icepick:3.2.0"
@@ -38,8 +39,4 @@ repositories {
}
mavenLocal()
maven { url 'https://maven.google.com' }
}
kapt {
generateStubs = true
}
@@ -21,8 +21,4 @@ dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
compile "org.jetbrains.kotlin:annotation-processor-example:$kotlin_version"
kapt "org.jetbrains.kotlin:annotation-processor-example:$kotlin_version"
}
kapt {
generateStubs = true
}
@@ -23,7 +23,6 @@ dependencies {
}
kapt {
generateStubs = true
arguments {
arg("suffix", "Customized")
arg("generate.kotlin.code", "true")
@@ -17,6 +17,7 @@
package org.jetbrains.kotlin.gradle.internal
import com.android.build.gradle.BaseExtension
import org.gradle.api.GradleException
import org.gradle.api.Project
import org.gradle.api.UnknownDomainObjectException
import org.gradle.api.file.FileCollection
@@ -172,13 +173,24 @@ class AnnotationProcessingManager(
val kaptProcessorPath get() = setOf(wrappersDirectory) + aptFiles + javaTask.classpath
private fun allowToUseOriginalKapt(): Boolean {
return project.hasProperty("allow.original.kapt")
&& project.property("allow.original.kapt").toString().toBoolean()
}
fun setupKapt() {
originalJavaCompilerArgs = javaTask.options.compilerArgs
if (aptFiles.isEmpty()) return
project.logger.warn("${project.name}: " +
"Original kapt is deprecated. Please add \"apply plugin: 'kotlin-kapt'\" to your build.gradle.")
val deprecationMessage = "${project.name}: " +
"Original kapt is deprecated. Please add \"apply plugin: 'kotlin-kapt'\" to your build.gradle."
if (allowToUseOriginalKapt()) {
project.logger.warn(deprecationMessage)
} else {
throw GradleException(deprecationMessage)
}
if (project.plugins.findPlugin(ANDROID_APT_PLUGIN_ID) != null) {
project.logger.warn("Please do not use `$ANDROID_APT_PLUGIN_ID` with kapt.")