Refactor kapt tasks' wiring
* Unify tasks wiring for new and old Android Gradle Plugin * rename wireKaptTask->registerGeneratedJavaSource
This commit is contained in:
+6
-8
@@ -117,14 +117,12 @@ class Android25ProjectHandler(kotlinConfigurationTools: KotlinConfigurationTools
|
||||
override val annotationProcessorOptions: Map<String, String>? =
|
||||
variantData.javaCompileOptions.annotationProcessorOptions.arguments
|
||||
|
||||
override fun wireKaptTask(project: Project,
|
||||
task: KaptTask,
|
||||
kotlinTask: KotlinCompile,
|
||||
javaTask: AbstractCompile) {
|
||||
|
||||
task.dependsOn(kotlinTask.dependsOn.minus(task))
|
||||
|
||||
val kaptSourceOutput = project.fileTree(task.destinationDir).builtBy(task)
|
||||
override fun registerGeneratedJavaSource(
|
||||
project: Project,
|
||||
kaptTask: KaptTask,
|
||||
javaTask: AbstractCompile
|
||||
) {
|
||||
val kaptSourceOutput = project.fileTree(kaptTask.destinationDir).builtBy(kaptTask)
|
||||
variantData.registerExternalAptJavaOutput(kaptSourceOutput)
|
||||
}
|
||||
}
|
||||
|
||||
+17
-14
@@ -26,7 +26,6 @@ import org.gradle.api.tasks.SourceSet
|
||||
import org.gradle.api.tasks.compile.AbstractCompile
|
||||
import org.gradle.api.tasks.compile.JavaCompile
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.android.AndroidGradleWrapper
|
||||
import org.jetbrains.kotlin.gradle.tasks.CompilerPluginOptions
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
import java.io.ByteArrayOutputStream
|
||||
@@ -48,7 +47,10 @@ abstract class KaptVariantData<T>(val variantData: T) {
|
||||
abstract val sourceProviders: Iterable<SourceProvider>
|
||||
abstract fun addJavaSourceFoldersToModel(generatedFilesDir: File)
|
||||
abstract val annotationProcessorOptions: Map<String, String>?
|
||||
abstract fun wireKaptTask(project: Project, task: KaptTask, kotlinTask: KotlinCompile, javaTask: AbstractCompile)
|
||||
abstract fun registerGeneratedJavaSource(
|
||||
project: Project,
|
||||
kaptTask: KaptTask,
|
||||
javaTask: AbstractCompile)
|
||||
}
|
||||
|
||||
// Subplugin for the Kotlin Gradle plugin
|
||||
@@ -159,7 +161,11 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin<KotlinCompile> {
|
||||
kaptVariantData, sourceSetName, kaptExtension, kaptClasspath)
|
||||
|
||||
val kaptGenerateStubsTask = context.createKaptGenerateStubsTask()
|
||||
context.createKaptKotlinTask(kaptGenerateStubsTask)
|
||||
val kaptTask = context.createKaptKotlinTask()
|
||||
|
||||
kaptGenerateStubsTask.dependsOn(*kotlinCompile.dependsOn.toTypedArray())
|
||||
kaptTask.dependsOn(kaptGenerateStubsTask)
|
||||
kotlinCompile.dependsOn(kaptTask)
|
||||
|
||||
/** Plugin options are applied to kapt*Compile inside [createKaptKotlinTask] */
|
||||
return emptyList()
|
||||
@@ -255,7 +261,7 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin<KotlinCompile> {
|
||||
}
|
||||
}
|
||||
|
||||
private fun Kapt3SubpluginContext.createKaptKotlinTask(kaptGenerateStubsTask: KaptGenerateStubsTask) {
|
||||
private fun Kapt3SubpluginContext.createKaptKotlinTask(): KaptTask {
|
||||
val kaptTask = project.tasks.create(getKaptTaskName("kapt"), KaptTask::class.java)
|
||||
kaptTask.kotlinCompileTask = kotlinCompile
|
||||
|
||||
@@ -276,17 +282,17 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin<KotlinCompile> {
|
||||
sourcesFromKotlinTask + stubSources
|
||||
}
|
||||
|
||||
kaptTask.dependsOn(kaptGenerateStubsTask)
|
||||
kotlinCompile.dependsOn(kaptTask)
|
||||
kotlinCompile.source(sourcesOutputDir, kotlinSourcesOutputDir)
|
||||
|
||||
if (kaptVariantData != null) {
|
||||
kaptVariantData.wireKaptTask(project, kaptTask, kotlinCompile, javaCompile)
|
||||
} else {
|
||||
wireKaptTaskForJavaProject(kaptTask, kotlinCompile, javaCompile)
|
||||
kaptVariantData.registerGeneratedJavaSource(project, kaptTask, javaCompile)
|
||||
}
|
||||
else {
|
||||
registerGeneratedJavaSource(kaptTask, javaCompile)
|
||||
}
|
||||
|
||||
buildAndAddOptionsTo(kaptTask.pluginOptions, aptMode = "apt")
|
||||
return kaptTask
|
||||
}
|
||||
|
||||
private fun Kapt3SubpluginContext.createKaptGenerateStubsTask(): KaptGenerateStubsTask {
|
||||
@@ -301,8 +307,6 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin<KotlinCompile> {
|
||||
kaptTask.mapClasspath { kotlinCompile.classpath }
|
||||
kaptTask.generatedSourcesDir = sourcesOutputDir
|
||||
|
||||
kaptTask.dependsOn(*(javaCompile.dependsOn.filter { it !== kotlinCompile }.toTypedArray()))
|
||||
|
||||
buildAndAddOptionsTo(kaptTask.pluginOptions, aptMode = "stubs")
|
||||
|
||||
return kaptTask
|
||||
@@ -335,7 +339,6 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin<KotlinCompile> {
|
||||
override fun getArtifactName() = "kotlin-annotation-processing"
|
||||
}
|
||||
|
||||
internal fun wireKaptTaskForJavaProject(task: KaptTask, kotlinTask: KotlinCompile, javaTask: AbstractCompile) {
|
||||
task.dependsOn(*(javaTask.dependsOn.filter { it !== kotlinTask && it != kotlinTask.name }.toTypedArray()))
|
||||
javaTask.source(task.destinationDir)
|
||||
internal fun registerGeneratedJavaSource(kaptTask: KaptTask, javaTask: AbstractCompile) {
|
||||
javaTask.source(kaptTask.destinationDir)
|
||||
}
|
||||
+11
-6
@@ -11,7 +11,7 @@ import org.gradle.api.ProjectConfigurationException
|
||||
import org.gradle.api.tasks.compile.AbstractCompile
|
||||
import org.jetbrains.kotlin.gradle.internal.KaptTask
|
||||
import org.jetbrains.kotlin.gradle.internal.KaptVariantData
|
||||
import org.jetbrains.kotlin.gradle.internal.wireKaptTaskForJavaProject
|
||||
import org.jetbrains.kotlin.gradle.internal.registerGeneratedJavaSource
|
||||
import org.jetbrains.kotlin.gradle.plugin.android.AndroidGradleWrapper
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
import org.jetbrains.kotlin.incremental.configureMultiProjectIncrementalCompilation
|
||||
@@ -41,9 +41,9 @@ internal class LegacyAndroidAndroidProjectHandler(kotlinConfigurationTools: Kotl
|
||||
variantData: BaseVariantData<out BaseVariantOutputData>,
|
||||
javaTask: AbstractCompile,
|
||||
kotlinTask: KotlinCompile,
|
||||
kotlinAfterJavaTask: KotlinCompile?) {
|
||||
|
||||
kotlinTask.setDependsOn(javaTask.dependsOn)
|
||||
kotlinAfterJavaTask: KotlinCompile?
|
||||
) {
|
||||
kotlinTask.dependsOn(*javaTask.dependsOn.toTypedArray())
|
||||
|
||||
kotlinTask.mapClasspath {
|
||||
javaTask.classpath + project.files(AndroidGradleWrapper.getRuntimeJars(androidPlugin, androidExt))
|
||||
@@ -118,8 +118,13 @@ internal class LegacyAndroidAndroidProjectHandler(kotlinConfigurationTools: Kotl
|
||||
override val annotationProcessorOptions: Map<String, String>? =
|
||||
AndroidGradleWrapper.getAnnotationProcessorOptionsFromAndroidVariant(variantData)
|
||||
|
||||
override fun wireKaptTask(project: Project, task: KaptTask, kotlinTask: KotlinCompile, javaTask: AbstractCompile) =
|
||||
wireKaptTaskForJavaProject(task, kotlinTask, javaTask)
|
||||
override fun registerGeneratedJavaSource(
|
||||
project: Project,
|
||||
kaptTask: KaptTask,
|
||||
javaTask: AbstractCompile
|
||||
) {
|
||||
registerGeneratedJavaSource(kaptTask, javaTask)
|
||||
}
|
||||
}
|
||||
|
||||
override fun wrapVariantDataForKapt(variantData: BaseVariantData<out BaseVariantOutputData>)
|
||||
|
||||
Reference in New Issue
Block a user