Kapt: compile kotlinAfterJava without Jdk as well in Android projects (KT-10854)

This commit is contained in:
Yan Zhulanow
2016-01-29 16:22:29 +03:00
parent e5f644a64a
commit a041414f35
2 changed files with 13 additions and 3 deletions
@@ -32,6 +32,7 @@ fun Project.initKapt(
kaptManager: AnnotationProcessingManager, kaptManager: AnnotationProcessingManager,
variantName: String, variantName: String,
kotlinOutputDir: File, kotlinOutputDir: File,
kotlinOptions: Any?,
subpluginEnvironment: SubpluginEnvironment, subpluginEnvironment: SubpluginEnvironment,
taskFactory: (suffix: String) -> AbstractCompile taskFactory: (suffix: String) -> AbstractCompile
): AbstractCompile? { ): AbstractCompile? {
@@ -39,7 +40,8 @@ fun Project.initKapt(
val kotlinAfterJavaTask: AbstractCompile? val kotlinAfterJavaTask: AbstractCompile?
if (kaptExtension.generateStubs) { if (kaptExtension.generateStubs) {
kotlinAfterJavaTask = createKotlinAfterJavaTask(javaTask, kotlinOutputDir, taskFactory) kotlinAfterJavaTask = createKotlinAfterJavaTask(javaTask, kotlinTask,
kotlinOutputDir, kotlinOptions, taskFactory)
kotlinTask.logger.kotlinDebug("kapt: Using class file stubs") kotlinTask.logger.kotlinDebug("kapt: Using class file stubs")
@@ -85,7 +87,9 @@ fun Project.initKapt(
private fun Project.createKotlinAfterJavaTask( private fun Project.createKotlinAfterJavaTask(
javaTask: AbstractCompile, javaTask: AbstractCompile,
kotlinTask: AbstractCompile,
kotlinOutputDir: File, kotlinOutputDir: File,
kotlinOptions: Any?,
taskFactory: (suffix: String) -> AbstractCompile taskFactory: (suffix: String) -> AbstractCompile
): AbstractCompile { ): AbstractCompile {
val kotlinAfterJavaTask = with (taskFactory(KOTLIN_AFTER_JAVA_TASK_SUFFIX)) { val kotlinAfterJavaTask = with (taskFactory(KOTLIN_AFTER_JAVA_TASK_SUFFIX)) {
@@ -102,6 +106,11 @@ private fun Project.createKotlinAfterJavaTask(
kotlinAfterJavaTask.dependsOn(javaTask) kotlinAfterJavaTask.dependsOn(javaTask)
kotlinAfterJavaTask.extensions.extraProperties.set("defaultModuleName", "${project.name}-${kotlinTask.name}")
if (kotlinOptions != null) {
kotlinAfterJavaTask.setProperty("kotlinOptions", kotlinOptions)
}
return kotlinAfterJavaTask return kotlinAfterJavaTask
} }
@@ -166,7 +166,7 @@ class Kotlin2JvmSourceSetProcessor(
aptConfiguration.resolve(), aptOutputDir, aptWorkingDir, tasksProvider.tasksLoader) aptConfiguration.resolve(), aptOutputDir, aptWorkingDir, tasksProvider.tasksLoader)
val kotlinAfterJavaTask = project.initKapt(kotlinTask, javaTask, kaptManager, val kotlinAfterJavaTask = project.initKapt(kotlinTask, javaTask, kaptManager,
sourceSetName, kotlinDestinationDir, subpluginEnvironment) { sourceSetName, kotlinDestinationDir, null, subpluginEnvironment) {
createKotlinCompileTask(it) createKotlinCompileTask(it)
} }
@@ -431,7 +431,8 @@ open class KotlinAndroidPlugin @Inject constructor(val scriptHandler: ScriptHand
kotlinTask.storeKaptAnnotationsFile(kaptManager) kotlinTask.storeKaptAnnotationsFile(kaptManager)
project.initKapt(kotlinTask, javaTask, kaptManager, variantDataName, kotlinOutputDir, subpluginEnvironment) { project.initKapt(kotlinTask, javaTask, kaptManager, variantDataName,
kotlinOutputDir, kotlinOptions, subpluginEnvironment) {
tasksProvider.createKotlinJVMTask(project, kotlinTaskName + KOTLIN_AFTER_JAVA_TASK_SUFFIX) tasksProvider.createKotlinJVMTask(project, kotlinTaskName + KOTLIN_AFTER_JAVA_TASK_SUFFIX)
} }
} }