From 13a4b593f66db544df415ffaac66aa5b6a20aed1 Mon Sep 17 00:00:00 2001 From: Stuart McCulloch Date: Thu, 1 Oct 2026 22:02:05 +0100 Subject: [PATCH 1/2] Fix intermittent spotless NoClassDefFoundErrors after clean --- build.gradle.kts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 93d09a3..d027833 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,13 +8,23 @@ plugins { id("com.diffplug.spotless") } -// predeclare formatter to workaround diffplug/spotless#2850 +// avoid parallel formatter provisioning spotlessPredeclare { java { googleJavaFormat() } } +// avoid closing Spotless' shared classloader while formatting +val rootClean = tasks.named("clean") +allprojects { + plugins.withId("com.diffplug.spotless") { + tasks.withType().configureEach { + mustRunAfter(rootClean) + } + } +} + scmVersion { versionCreator("simple") } From 45629851f7fae0603f0ae21c55c602cb9022ac9e Mon Sep 17 00:00:00 2001 From: Stuart McCulloch Date: Fri, 2 Oct 2026 14:43:52 +0100 Subject: [PATCH 2/2] Order Spotless after all clean tasks Co-authored-by: Brice Dutheil --- build.gradle.kts | 12 +----------- buildSrc/src/main/kotlin/java-common.gradle.kts | 8 ++++++++ 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index d027833..93d09a3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,23 +8,13 @@ plugins { id("com.diffplug.spotless") } -// avoid parallel formatter provisioning +// predeclare formatter to workaround diffplug/spotless#2850 spotlessPredeclare { java { googleJavaFormat() } } -// avoid closing Spotless' shared classloader while formatting -val rootClean = tasks.named("clean") -allprojects { - plugins.withId("com.diffplug.spotless") { - tasks.withType().configureEach { - mustRunAfter(rootClean) - } - } -} - scmVersion { versionCreator("simple") } diff --git a/buildSrc/src/main/kotlin/java-common.gradle.kts b/buildSrc/src/main/kotlin/java-common.gradle.kts index 9b818d2..a648f5c 100644 --- a/buildSrc/src/main/kotlin/java-common.gradle.kts +++ b/buildSrc/src/main/kotlin/java-common.gradle.kts @@ -77,6 +77,14 @@ spotless { } } +// avoid closing Spotless' shared classloader while formatting +val cleanTaskPaths = rootProject.allprojects.map { + "${it.path.trimEnd(':')}:clean" +} +tasks.withType().configureEach { + mustRunAfter(cleanTaskPaths) +} + spotbugs { useJavaToolchains = true omitVisitors = listOf("FindReturnRef")