From fdc183e3af39980a12421adb8ab73c626c28f11f Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Tue, 19 May 2015 18:11:21 +0300 Subject: [PATCH] Apt working dir is now outside the Kotlin classes directory --- .../tasks/AnnotationProcessingManager.kt | 25 ++++++++++--------- .../jetbrains/kotlin/gradle/tasks/Tasks.kt | 5 ++-- .../kotlin/gradle/plugin/KotlinPlugin.kt | 14 +++++++---- 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/AnnotationProcessingManager.kt b/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/AnnotationProcessingManager.kt index 0e17c328aaf..9e31a329b77 100644 --- a/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/AnnotationProcessingManager.kt +++ b/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/AnnotationProcessingManager.kt @@ -33,16 +33,17 @@ public class AnnotationProcessingManager(private val task: KotlinCompile) { private companion object { val JAVA_FQNAME_PATTERN = "^([\\p{L}_$][\\p{L}\\p{N}_$]*\\.)*[\\p{L}_$][\\p{L}\\p{N}_$]*$".toRegex() + val WRAPPERS_DIRECTORY = "wrappers" val ANNOTATIONS_FILENAME = "annotations.txt" } - fun getAnnotationFile(outputDirFile: String): File { - val aptDir = File(outputDirFile, "0apt") - aptDir.mkdirs() - return File(aptDir, ANNOTATIONS_FILENAME) + fun getAnnotationFile(): File { + val aptWorkingDir = task.kotlinAptWorkingDir!! + aptWorkingDir.mkdirs() + return File(aptWorkingDir, "$WRAPPERS_DIRECTORY/$ANNOTATIONS_FILENAME") } - fun afterKotlinCompile(outputDirFile: File) { + fun afterKotlinCompile() { val extraProperties = task.getExtensions().getExtraProperties() val javaTask = try { @@ -54,20 +55,20 @@ public class AnnotationProcessingManager(private val task: KotlinCompile) { } val aptFiles = task.aptFiles + val aptWorkingDir = task.kotlinAptWorkingDir val aptOutputDir = task.kotlinAptOutputDir - if (javaTask == null || aptFiles.isEmpty() || aptOutputDir == null) return + if (javaTask == null || aptFiles.isEmpty() || aptWorkingDir == null || aptOutputDir == null) return - val aptDir = File(outputDirFile, "0apt") - val annotationDeclarationsFile = File(aptDir, ANNOTATIONS_FILENAME) + val annotationDeclarationsFile = File(aptWorkingDir, ANNOTATIONS_FILENAME) - generateJavaHackFile(aptDir, javaTask) + generateJavaHackFile(aptWorkingDir, javaTask) javaTask.appendClasspath(aptFiles) val annotationProcessorFqNames = lookupAnnotationProcessors(aptFiles) - generateAnnotationProcessorStubs(aptDir, javaTask, annotationProcessorFqNames) - + generateAnnotationProcessorStubs(aptWorkingDir, javaTask, annotationProcessorFqNames) + addGeneratedSourcesOutputToCompilerArgs(javaTask, aptOutputDir) } @@ -86,7 +87,7 @@ public class AnnotationProcessingManager(private val task: KotlinCompile) { } private fun generateAnnotationProcessorStubs(aptDir: File, javaTask: JavaCompile, apFqNames: Set) { - val stubOutputDir = File(aptDir, "wrappers") + val stubOutputDir = File(aptDir, "$WRAPPERS_DIRECTORY") generateKotlinAptAnnotation(stubOutputDir) diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index 45a1abc68bc..08a9df36f79 100644 --- a/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -107,6 +107,7 @@ public open class KotlinCompile() : AbstractKotlinCompile = emptySet() public var kotlinAptOutputDir: File? = null + public var kotlinAptWorkingDir: File? = null val srcDirsSources = HashSet() @@ -133,7 +134,7 @@ public open class KotlinCompile() : AbstractKotlinCompile