kapt: Use actual classpath in the second Kotlin task as well

This commit is contained in:
Yan Zhulanow
2015-06-18 19:12:54 +03:00
parent 5f85a028ae
commit d0897193e8
@@ -48,6 +48,8 @@ import java.lang.ref.WeakReference
val DEFAULT_ANNOTATIONS = "org.jebrains.kotlin.gradle.defaultAnnotations" val DEFAULT_ANNOTATIONS = "org.jebrains.kotlin.gradle.defaultAnnotations"
val KOTLIN_AFTER_JAVA_TASK_SUFFIX = "AfterJava"
abstract class KotlinSourceSetProcessor<T : AbstractCompile>( abstract class KotlinSourceSetProcessor<T : AbstractCompile>(
val project: ProjectInternal, val project: ProjectInternal,
val javaBasePlugin: JavaBasePlugin, val javaBasePlugin: JavaBasePlugin,
@@ -170,9 +172,16 @@ class Kotlin2JvmSourceSetProcessor(
val kaptManager = AnnotationProcessingManager(kotlinTask, javaTask, sourceSetName, val kaptManager = AnnotationProcessingManager(kotlinTask, javaTask, sourceSetName,
aptConfiguration.resolve(), aptOutputDir, aptWorkingDir, tasksProvider.tasksLoader) aptConfiguration.resolve(), aptOutputDir, aptWorkingDir, tasksProvider.tasksLoader)
project.initKapt(kotlinTask, javaTask, kaptManager, sourceSetName, kotlinDestinationDir, subpluginEnvironment) { val kotlinAfterJavaTask = project.initKapt(kotlinTask, javaTask, kaptManager,
sourceSetName, kotlinDestinationDir, subpluginEnvironment) {
createKotlinCompileTask(it) createKotlinCompileTask(it)
} }
if (kotlinAfterJavaTask != null) {
javaTask.doFirst {
kotlinAfterJavaTask.setClasspath(project.files(kotlinTask.getClasspath(), javaTask.getDestinationDir()))
}
}
} }
} }
} }
@@ -433,6 +442,10 @@ open class KotlinAndroidPlugin @Inject constructor(val scriptHandler: ScriptHand
val androidRT = project.files(AndroidGradleWrapper.getRuntimeJars(androidPlugin, androidExt)) val androidRT = project.files(AndroidGradleWrapper.getRuntimeJars(androidPlugin, androidExt))
val fullClasspath = (javaTask.getClasspath() + androidRT) - project.files(kotlinTask.property("kotlinDestinationDir")) val fullClasspath = (javaTask.getClasspath() + androidRT) - project.files(kotlinTask.property("kotlinDestinationDir"))
(it as AbstractCompile).setClasspath(fullClasspath) (it as AbstractCompile).setClasspath(fullClasspath)
for (task in project.getTasksByName(kotlinTaskName + KOTLIN_AFTER_JAVA_TASK_SUFFIX, false)) {
(task as AbstractCompile).setClasspath(project.files(fullClasspath, javaTask.getDestinationDir()))
}
} }
javaTask.dependsOn(kotlinTaskName) javaTask.dependsOn(kotlinTaskName)
@@ -447,7 +460,7 @@ 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, subpluginEnvironment) {
tasksProvider.createKotlinJVMTask(project, kotlinTaskName + "AfterJava") tasksProvider.createKotlinJVMTask(project, kotlinTaskName + KOTLIN_AFTER_JAVA_TASK_SUFFIX)
} }
} }
@@ -584,7 +597,7 @@ private fun Project.initKapt(
kotlinOutputDir: File, kotlinOutputDir: File,
subpluginEnvironment: SubpluginEnvironment, subpluginEnvironment: SubpluginEnvironment,
taskFactory: (suffix: String) -> AbstractCompile taskFactory: (suffix: String) -> AbstractCompile
) { ): AbstractCompile? {
val kaptExtension = getExtensions().getByType(javaClass<KaptExtension>()) val kaptExtension = getExtensions().getByType(javaClass<KaptExtension>())
val kotlinAfterJavaTask: AbstractCompile? val kotlinAfterJavaTask: AbstractCompile?
@@ -614,7 +627,6 @@ private fun Project.initKapt(
javaTask.doFirst { javaTask.doFirst {
kaptManager.setupKapt() kaptManager.setupKapt()
kotlinAfterJavaTask?.setClasspath(files(kotlinTask.getClasspath(), javaTask.getDestinationDir()))
} }
javaTask.doLast { javaTask.doLast {
@@ -622,6 +634,7 @@ private fun Project.initKapt(
} }
kotlinTask.storeKaptAnnotationsFile(kaptManager) kotlinTask.storeKaptAnnotationsFile(kaptManager)
return kotlinAfterJavaTask
} }
private fun Project.createKotlinAfterJavaTask( private fun Project.createKotlinAfterJavaTask(
@@ -629,7 +642,7 @@ private fun Project.createKotlinAfterJavaTask(
kotlinOutputDir: File, kotlinOutputDir: File,
taskFactory: (suffix: String) -> AbstractCompile taskFactory: (suffix: String) -> AbstractCompile
): AbstractCompile { ): AbstractCompile {
val kotlinAfterJavaTask = with (taskFactory("AfterJava")) { val kotlinAfterJavaTask = with (taskFactory(KOTLIN_AFTER_JAVA_TASK_SUFFIX)) {
setProperty("kotlinDestinationDir", kotlinOutputDir) setProperty("kotlinDestinationDir", kotlinOutputDir)
setDestinationDir(javaTask.getDestinationDir()) setDestinationDir(javaTask.getDestinationDir())
setClasspath(javaTask.getClasspath()) setClasspath(javaTask.getClasspath())