From 3454a5304ed840a23ae2433850ce22b63caae875 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Brais=20Gab=C3=ADn?= Date: Sun, 7 Aug 2022 21:42:20 +0200 Subject: [PATCH] Always execute DetektGenerateConfigTask in serial --- .../gitlab/arturbosch/detekt/DetektGenerateConfigTask.kt | 5 +++++ .../kotlin/io/gitlab/arturbosch/detekt/DetektPlugin.kt | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/DetektGenerateConfigTask.kt b/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/DetektGenerateConfigTask.kt index 14046810e8b..f220abba3ea 100644 --- a/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/DetektGenerateConfigTask.kt +++ b/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/DetektGenerateConfigTask.kt @@ -9,6 +9,8 @@ import io.gitlab.arturbosch.detekt.invoke.GenerateConfigArgument import org.gradle.api.DefaultTask import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.provider.Provider +import org.gradle.api.services.BuildService +import org.gradle.api.services.BuildServiceParameters import org.gradle.api.tasks.CacheableTask import org.gradle.api.tasks.Classpath import org.gradle.api.tasks.InputFiles @@ -72,4 +74,7 @@ abstract class DetektGenerateConfigTask : DefaultTask() { taskName = name, ) } + + @Suppress("UnnecessaryAbstractClass") + abstract class SingleExecutionBuildService : BuildService } diff --git a/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/DetektPlugin.kt b/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/DetektPlugin.kt index 38f02436b12..43760179081 100644 --- a/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/DetektPlugin.kt +++ b/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/DetektPlugin.kt @@ -60,8 +60,16 @@ class DetektPlugin : Plugin { } private fun Project.registerGenerateConfigTask(extension: DetektExtension) { + val detektGenerateConfigSingleExecution = project.gradle.sharedServices.registerIfAbsent( + "DetektGenerateConfigSingleExecution", + DetektGenerateConfigTask.SingleExecutionBuildService::class.java + ) { spec -> + spec.maxParallelUsages.set(1) + } + tasks.register(GENERATE_CONFIG, DetektGenerateConfigTask::class.java) { it.config.setFrom(project.provider { extension.config }) + it.usesService(detektGenerateConfigSingleExecution) } }