From fe6ddcc1fa3d70ec009b070bdaf0e7bb31613480 Mon Sep 17 00:00:00 2001 From: Andrey Date: Mon, 15 Mar 2021 11:37:06 +0300 Subject: [PATCH] [KAPT] Skip kapt tasks if no annotations processors are provided (#4190) So we don't do any preparation, don't spin up compiler. And user will see SKIPPED in task execution --- .../internal/kapt/Kapt3KotlinGradleSubplugin.kt | 13 +++++++++++++ .../gradle/internal/kapt/KaptWithoutKotlincTask.kt | 6 ++++-- .../src/org/jetbrains/kotlin/kapt3/Kapt3Plugin.kt | 3 ++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt index 43caf5aba9f..28b29778a92 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt @@ -525,6 +525,13 @@ class Kapt3GradleSubplugin @Inject internal constructor(private val registry: To registerSubpluginOptions(kaptTaskProvider, subpluginOptions) } + kaptTaskProvider.configure { task -> + task.onlyIf { + it as KaptTask + it.includeCompileClasspath || !it.kaptClasspath.isEmpty() + } + } + return kaptTaskProvider } @@ -568,6 +575,12 @@ class Kapt3GradleSubplugin @Inject internal constructor(private val registry: To kaptTask.kaptClasspathConfigurations = kaptClasspathConfigurations PropertiesProvider(project).mapKotlinTaskProperties(kaptTask) + + if (!includeCompileClasspath) { + kaptTask.onlyIf { + !(it as KaptGenerateStubsTask).kaptClasspath.isEmpty() + } + } } project.whenEvaluated { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptWithoutKotlincTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptWithoutKotlincTask.kt index bfdaf17ece2..987d2a8f737 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptWithoutKotlincTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptWithoutKotlincTask.kt @@ -119,8 +119,10 @@ abstract class KaptWithoutKotlincTask @Inject constructor(private val workerExec ) // Skip annotation processing if no annotation processors were provided. - if (annotationProcessorFqNames.isEmpty() && kaptClasspath.isEmpty()) + if (annotationProcessorFqNames.isEmpty() && kaptClasspath.isEmpty()) { + logger.info("No annotation processors provided. Skip KAPT processing.") return + } val kaptClasspath = kaptJars + kotlinStdlibClasspath @@ -301,4 +303,4 @@ internal data class KaptOptionsForWorker( val javacOptions: Map, val flags: Set -) : Serializable \ No newline at end of file +) : Serializable diff --git a/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Plugin.kt b/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Plugin.kt index d053ac69664..36cb58f3d49 100644 --- a/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Plugin.kt +++ b/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Plugin.kt @@ -209,6 +209,7 @@ class Kapt3ComponentRegistrar : ComponentRegistrar { if (processingClasspath.isEmpty()) { // Skip annotation processing if no annotation processors were provided if (mode != AptMode.WITH_COMPILATION) { + logger.info("No annotation processors provided. Skip KAPT processing.") abortAnalysis() } return false @@ -274,4 +275,4 @@ class Kapt3ComponentRegistrar : ComponentRegistrar { return AnalysisResult.success(bindingTrace.bindingContext, module, shouldGenerateCode = false) } } -} \ No newline at end of file +}