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