From b227672e084d6c9364dfc1779d1836fd14e24519 Mon Sep 17 00:00:00 2001 From: Adam Semenenko <152864218+adam-enko@users.noreply.github.com> Date: Thu, 28 Aug 2025 11:20:57 +0200 Subject: [PATCH 1/3] Update Gradle settings plugins - Update develocity, common-custom-user-data-gradle-plugin, foojay-resolver-convention. (I didn't update foojay-resolver-convention to the latest version, 1.0.0, because it requires Java 17.) - Add a task to ensure consistency between version catalog and build-settings-logic. (Because the develocity version was out-of-sync) --- build-settings-logic/build.gradle.kts | 72 ++++++++++++++++++++++++ build-settings-logic/settings.gradle.kts | 8 +-- gradle/libs.versions.toml | 6 +- 3 files changed, 79 insertions(+), 7 deletions(-) diff --git a/build-settings-logic/build.gradle.kts b/build-settings-logic/build.gradle.kts index 78114e59b1..740c93e42b 100644 --- a/build-settings-logic/build.gradle.kts +++ b/build-settings-logic/build.gradle.kts @@ -17,3 +17,75 @@ dependencies { implementation(libs.gradlePlugin.gradle.customUserData) implementation(libs.gradlePlugin.gradle.foojayToolchains) } + + +//region check consistent develocity version + +val checkBuildSettingsLogicPluginConsistency by tasks.registering { + description + group = LifecycleBasePlugin.VERIFICATION_GROUP + + val customUserDataVersion = libs.versions.gradlePlugin.gradle.customUserData + val develocityVersion = libs.versions.gradlePlugin.gradle.develocity + val foojayToolchainsVersion = libs.versions.gradlePlugin.gradle.foojayToolchains + + inputs.property("customUserDataVersionCatalogVersion", customUserDataVersion) + inputs.property("develocityVersionCatalogVersion", develocityVersion) + inputs.property("foojayToolchainsVersionCatalogVersion", foojayToolchainsVersion) + + val settingsGradleKtsInput = layout.projectDirectory.file("settings.gradle.kts") + inputs.file(settingsGradleKtsInput) + .withPropertyName("settingsGradleKtsInput") + .normalizeLineEndings() + .withPathSensitivity(PathSensitivity.RELATIVE) + + val projectName = project.displayName + + doLast { + val pluginVersionsMap = + settingsGradleKtsInput.asFile.useLines { lines -> + lines + .dropWhile { it != "plugins {" } + .takeWhile { it != "}" } + .filter { it.startsWith(" id(") } + .associate { + val id = it.substringAfter("id(\"") + .substringBefore("\")") + val version = it.substringAfter("version \"") + .substringBefore("\"") + id to version + } + } + + val result = buildString { + fun checkVersion(id: String, version: String) { + val actualVersion = pluginVersionsMap[id] + when { + actualVersion == null -> + appendLine("plugin $id: missing") + + actualVersion != version -> + appendLine("plugin $id: expected $version, actual ${pluginVersionsMap[id]}") + } + } + + checkVersion("com.gradle.develocity", develocityVersion.get()) + checkVersion("com.gradle.common-custom-user-data-gradle-plugin", customUserDataVersion.get()) + checkVersion("org.gradle.toolchains.foojay-resolver-convention", foojayToolchainsVersion.get()) + } + + check(result.isEmpty()) { + """ + $projectName - inconsistent plugin versions: + ${result.prependIndent()} + """.trimIndent() + } + } +} + +tasks.compileKotlin { + // pick a task that always runs to depend on the check, to make sure it always runs + dependsOn(checkBuildSettingsLogicPluginConsistency) +} + +//endregion diff --git a/build-settings-logic/settings.gradle.kts b/build-settings-logic/settings.gradle.kts index d4bf5a602e..521aa2f0b2 100644 --- a/build-settings-logic/settings.gradle.kts +++ b/build-settings-logic/settings.gradle.kts @@ -48,11 +48,11 @@ dependencyResolutionManagement { //region copy of src/main/kotlin/dokkasettings.settings.gradle.kts -// version should be kept in sync with `gradle/libs.versions.toml` plugins { - id("com.gradle.develocity") version "3.17.6" - id("com.gradle.common-custom-user-data-gradle-plugin") version "2.0.2" apply false - id("org.gradle.toolchains.foojay-resolver-convention") version "0.7.0" + // versions should be kept in sync with `gradle/libs.versions.toml` + id("com.gradle.develocity") version "4.1.1" + id("com.gradle.common-custom-user-data-gradle-plugin") version "2.3" apply false + id("org.gradle.toolchains.foojay-resolver-convention") version "0.10.0" } //region properties diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2c2b8f73cd..8c9d3cf746 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -62,9 +62,9 @@ gradlePlugin-gradleNode = "7.1.0" ## Gradle Develocity # versions should be kept in sync with `build-settings-logic/settings.gradle.kts` -gradlePlugin-gradle-customUserData = "2.0.2" -gradlePlugin-gradle-develocity = "3.18.2" -gradlePlugin-gradle-foojayToolchains = "0.7.0" +gradlePlugin-gradle-customUserData = "2.3" +gradlePlugin-gradle-develocity = "4.1.1" +gradlePlugin-gradle-foojayToolchains = "0.10.0" ## Test junit = "5.9.3" From d446ba7c5bbc0de4b987570dad65aad783434203 Mon Sep 17 00:00:00 2001 From: Adam Semenenko <152864218+adam-enko@users.noreply.github.com> Date: Thu, 28 Aug 2025 12:09:34 +0200 Subject: [PATCH 2/3] add description --- build-settings-logic/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-settings-logic/build.gradle.kts b/build-settings-logic/build.gradle.kts index 740c93e42b..a6b34d6bf6 100644 --- a/build-settings-logic/build.gradle.kts +++ b/build-settings-logic/build.gradle.kts @@ -22,7 +22,7 @@ dependencies { //region check consistent develocity version val checkBuildSettingsLogicPluginConsistency by tasks.registering { - description + description = "Check consistency of plugin versions in settings.gradle.kts with version catalog." group = LifecycleBasePlugin.VERIFICATION_GROUP val customUserDataVersion = libs.versions.gradlePlugin.gradle.customUserData From c5c06b3cc08328ecb0713261ca313ac682aede07 Mon Sep 17 00:00:00 2001 From: Adam <152864218+adam-enko@users.noreply.github.com> Date: Thu, 28 Aug 2025 15:04:21 +0200 Subject: [PATCH 3/3] reuse 'actualVersion' val --- build-settings-logic/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-settings-logic/build.gradle.kts b/build-settings-logic/build.gradle.kts index a6b34d6bf6..69c4a48332 100644 --- a/build-settings-logic/build.gradle.kts +++ b/build-settings-logic/build.gradle.kts @@ -65,7 +65,7 @@ val checkBuildSettingsLogicPluginConsistency by tasks.registering { appendLine("plugin $id: missing") actualVersion != version -> - appendLine("plugin $id: expected $version, actual ${pluginVersionsMap[id]}") + appendLine("plugin $id: expected $version, actual $actualVersion") } }