Apt working dir is now outside the Kotlin classes directory

This commit is contained in:
Yan Zhulanow
2015-05-19 18:11:21 +03:00
parent d93508f4d3
commit fdc183e3af
3 changed files with 25 additions and 19 deletions
@@ -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<String>) {
val stubOutputDir = File(aptDir, "wrappers")
val stubOutputDir = File(aptDir, "$WRAPPERS_DIRECTORY")
generateKotlinAptAnnotation(stubOutputDir)
@@ -107,6 +107,7 @@ public open class KotlinCompile() : AbstractKotlinCompile<K2JVMCompilerArguments
public var aptFiles: Set<File> = emptySet()
public var kotlinAptOutputDir: File? = null
public var kotlinAptWorkingDir: File? = null
val srcDirsSources = HashSet<SourceDirectorySet>()
@@ -133,7 +134,7 @@ public open class KotlinCompile() : AbstractKotlinCompile<K2JVMCompilerArguments
val pluginOptions = arrayListOf(*basePluginOptions)
if (aptFiles.isNotEmpty()) {
val annotationDeclarationsFile = annotationProcessingManager.getAnnotationFile(args.destination)
val annotationDeclarationsFile = annotationProcessingManager.getAnnotationFile()
if (annotationDeclarationsFile.exists()) annotationDeclarationsFile.delete()
pluginOptions.add("plugin:$ANNOTATIONS_PLUGIN_NAME:output=" + annotationDeclarationsFile)
}
@@ -173,7 +174,7 @@ public open class KotlinCompile() : AbstractKotlinCompile<K2JVMCompilerArguments
FileUtils.copyDirectory(outputDirFile, getDestinationDir())
}
annotationProcessingManager.afterKotlinCompile(outputDirFile)
annotationProcessingManager.afterKotlinCompile()
}
// override setSource to track source directory sets