Repository: gradle/gradle
Pull request #33096: Add Best Practice: Don't Explicitly Depend on Kotlin StdLib
Author: login: tresat
Labels: name: a:documentation
description: Documentation content
name: re:footguns-and-best-practices
description: Issues related to avoiding pitfalls in Gradle
Created: 2025-04-11T17:09:14Z | Merged: 2025-04-21T14:30:53Z

Test with `gradle :docs:docsTest --rerun --tests "*snippet-best-practices-kotlin-std*"`


Diff:
diff --git a/platforms/documentation/docs/build.gradle.kts b/platforms/documentation/docs/build.gradle.kts
index 4cf9e1c986226..fe8e818a4d9dd 100644
--- a/platforms/documentation/docs/build.gradle.kts
+++ b/platforms/documentation/docs/build.gradle.kts
@@ -685,6 +685,11 @@ tasks.named<Test>("docsTest") {
             excludeTestsMatching("org.gradle.docs.samples.*.snippet-code-quality-code-quality*")
         }
 
+        if (javaVersion.isCompatibleWith(JavaVersion.VERSION_24)) {
+            // Kotlin does not yet support 24 JDK target
+            excludeTestsMatching("org.gradle.docs.samples.*.snippet-best-practices-kotlin-std-lib*")
+        }
+
         if (OperatingSystem.current().isMacOsX && System.getProperty("os.arch") == "aarch64") {
             excludeTestsMatching("org.gradle.docs.samples.*.snippet-native*.sample")
             excludeTestsMatching("org.gradle.docs.samples.*.snippet-swift*.sample")
diff --git a/platforms/documentation/docs/src/docs/userguide/best-practices/bp_dependencies.adoc b/platforms/documentation/docs/src/docs/userguide/best-practices/bp_dependencies.adoc
index 01231f8871c97..5f557be264817 100644
--- a/platforms/documentation/docs/src/docs/userguide/best-practices/bp_dependencies.adoc
+++ b/platforms/documentation/docs/src/docs/userguide/best-practices/bp_dependencies.adoc
@@ -160,3 +160,42 @@ include::sample[dir="snippets/bestPractices/settingsRepositoriesDo/groovy",files
 
 === Tags
 `<<tags_reference.adoc#tag:structuring-builds,#structuring-builds>>`
+
+[[dont_depend_on_kotlin_stdlib]]
+== Don't Explicitly Depend on the Kotlin Standard Library
+:keywords: dependencies
+
+The Kotlin Gradle Plugin automatically adds a dependency on the Kotlin standard library (`stdlib`) to each source set, so there is no need to declare it explicitly.
+
+=== Explanation
+
+The version of the standard library added is the same as the version of the Kotlin Gradle Plugin applied to the project.  
+If your build does not require a specific or different version of the standard library, you should avoid adding it manually.
+
+NOTE: Setting the `kotlin.stdlib.default.dependency` property to `false` prevents the Kotlin plugin from automatically adding the Kotlin standard library dependency to your project. This can be useful in specific scenarios, such as when you want to manage the Kotlin standard library dependency version manually.
+
+=== Example
+
+==== Don't Do This
+
+====
+include::sample[dir="snippets/bestPractices/kotlinStdLib-avoid/kotlin",files="build.gradle.kts[tags=avoid-this]"]
+include::sample[dir="snippets/bestPractices/kotlinStdLib-avoid/groovy",files="build.gradle[tags=avoid-this]"]
+====
+
+<1> *`stdlib` is explicitly depended upon*: This project contains an implicit dependency on the Kotlin standard library, which is required to compile its source code.
+
+==== Do This Instead
+
+====
+include::sample[dir="snippets/bestPractices/kotlinStdLib-do/kotlin",files="build.gradle.kts[tags=do-this]"]
+include::sample[dir="snippets/bestPractices/kotlinStdLib-do/groovy",files="build.gradle[tags=do-this]"]
+====
+
+*`stdlib` dependency is not included explicitly*: The standard library remains available for use, and source code requiring it can be compiled without any issues.
+
+=== References
+- https://docs.gradle.org/current/kotlin-dsl/gradle/org.gradle.kotlin.dsl/kotlin.html[the `kotlin()` function]
+
+=== Tags
+`<<tags_reference.adoc#tag:dependencies,#dependencies>>`
diff --git a/platforms/documentation/docs/src/docs/userguide/best-practices/tags_reference.adoc b/platforms/documentation/docs/src/docs/userguide/best-practices/tags_reference.adoc
index b0b3143e7c9c8..81ea7b251ab62 100644
--- a/platforms/documentation/docs/src/docs/userguide/best-practices/tags_reference.adoc
+++ b/platforms/documentation/docs/src/docs/userguide/best-practices/tags_reference.adoc
@@ -22,6 +22,9 @@ Here you can find a brief explanation of all the tags used in the best practices
 [[tag:caching]]
 `#caching` :: Items that are related to using Gradle's various caching mechanisms, such as <<build_cache.adoc#sec:task_output_caching,caching tasks>>.
 
+[[tag:dependencies]]
+`#dependencies` :: Items that are related to <<dependency_resolution.adoc#dependency-resolution-basics,dependency resolution>> in Gradle, including declaring dependencies, dependency management, and dependency resolution.
+
 [[tag:inputs-and-outputs]]
 `#inputs-and-outputs`:: Items that are related to Gradle <<writing_tasks.adoc#task_inputs_and_outputs,task inputs and outputs>>, the annotations used to declare them, and their proper use.
 
@@ -45,4 +48,3 @@ Here you can find a brief explanation of all the tags used in the best practices
 
 [[tag:version-catalog]]
 `#version-catalog` :: Items that explain how to use <<version_catalogs.adoc#version-catalog,version catalogs>> to centralize dependency declarations.
-
diff --git a/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-avoid/groovy/build.gradle b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-avoid/groovy/build.gradle
new file mode 100644
index 0000000000000..5ff8c7bde2ddb
--- /dev/null
+++ b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-avoid/groovy/build.gradle
@@ -0,0 +1,9 @@
+// tag::avoid-this[]
+plugins {
+    id("org.jetbrains.kotlin.jvm") version "2.0.21"
+}
+
+dependencies {
+    api("org.jetbrains.kotlin:kotlin-stdlib:2.0.21") // <1>
+}
+// end::avoid-this[]
diff --git a/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-avoid/groovy/settings.gradle b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-avoid/groovy/settings.gradle
new file mode 100644
index 0000000000000..e1b1d2956cd22
--- /dev/null
+++ b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-avoid/groovy/settings.gradle
@@ -0,0 +1,7 @@
+dependencyResolutionManagement {
+    repositories {
+        mavenCentral()
+    }
+}
+
+rootProject.name = "kotlin-std-lib-avoid"
diff --git a/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-avoid/groovy/src/main/kotlin/org/example/Sample.kt b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-avoid/groovy/src/main/kotlin/org/example/Sample.kt
new file mode 100644
index 0000000000000..8c0816238d388
--- /dev/null
+++ b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-avoid/groovy/src/main/kotlin/org/example/Sample.kt
@@ -0,0 +1,7 @@
+// tag::avoid-this[]
+class Sample {
+    fun joinStrings(strings: List<String>): String {
+        return strings.joinToString(separator = ", ") // <1>
+    }
+}
+// end::avoid-this[]
diff --git a/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-avoid/kotlin/build.gradle.kts b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-avoid/kotlin/build.gradle.kts
new file mode 100644
index 0000000000000..c589ac2201f46
--- /dev/null
+++ b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-avoid/kotlin/build.gradle.kts
@@ -0,0 +1,9 @@
+// tag::avoid-this[]
+plugins {
+    kotlin("jvm").version("2.0.21")
+}
+
+dependencies {
+    api(kotlin("stdlib")) // <1>
+}
+// end::avoid-this[]
diff --git a/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-avoid/kotlin/settings.gradle.kts b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-avoid/kotlin/settings.gradle.kts
new file mode 100644
index 0000000000000..e1b1d2956cd22
--- /dev/null
+++ b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-avoid/kotlin/settings.gradle.kts
@@ -0,0 +1,7 @@
+dependencyResolutionManagement {
+    repositories {
+        mavenCentral()
+    }
+}
+
+rootProject.name = "kotlin-std-lib-avoid"
diff --git a/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-avoid/kotlin/src/main/kotlin/org/example/Sample.kt b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-avoid/kotlin/src/main/kotlin/org/example/Sample.kt
new file mode 100644
index 0000000000000..8c0816238d388
--- /dev/null
+++ b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-avoid/kotlin/src/main/kotlin/org/example/Sample.kt
@@ -0,0 +1,7 @@
+// tag::avoid-this[]
+class Sample {
+    fun joinStrings(strings: List<String>): String {
+        return strings.joinToString(separator = ", ") // <1>
+    }
+}
+// end::avoid-this[]
diff --git a/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-avoid/tests/kotlinStdLib-avoid.sample.conf b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-avoid/tests/kotlinStdLib-avoid.sample.conf
new file mode 100644
index 0000000000000..7c8ad2cbf87d1
--- /dev/null
+++ b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-avoid/tests/kotlinStdLib-avoid.sample.conf
@@ -0,0 +1,2 @@
+executable: gradle
+args: compileKotlin
diff --git a/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-do/groovy/build.gradle b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-do/groovy/build.gradle
new file mode 100644
index 0000000000000..7e587859ba6ac
--- /dev/null
+++ b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-do/groovy/build.gradle
@@ -0,0 +1,5 @@
+// tag::do-this[]
+plugins {
+    id("org.jetbrains.kotlin.jvm") version "2.0.21"
+}
+// end::do-this[]
diff --git a/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-do/groovy/settings.gradle b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-do/groovy/settings.gradle
new file mode 100644
index 0000000000000..1929ee9b9eb63
--- /dev/null
+++ b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-do/groovy/settings.gradle
@@ -0,0 +1,7 @@
+dependencyResolutionManagement {
+    repositories {
+        mavenCentral()
+    }
+}
+
+rootProject.name = "kotlin-std-lib-do"
diff --git a/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-do/groovy/src/main/kotlin/org/example/Sample.kt b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-do/groovy/src/main/kotlin/org/example/Sample.kt
new file mode 100644
index 0000000000000..78fc1c1d3c418
--- /dev/null
+++ b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-do/groovy/src/main/kotlin/org/example/Sample.kt
@@ -0,0 +1,7 @@
+// tag::do-this[]
+class Sample {
+    fun joinStrings(strings: List<String>): String {
+        return strings.joinToString(separator = ", ") // <1>
+    }
+}
+// end::do-this[]
diff --git a/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-do/kotlin/build.gradle.kts b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-do/kotlin/build.gradle.kts
new file mode 100644
index 0000000000000..9ec03e8c0a2eb
--- /dev/null
+++ b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-do/kotlin/build.gradle.kts
@@ -0,0 +1,5 @@
+// tag::do-this[]
+plugins {
+    kotlin("jvm").version("2.0.21")
+}
+// end::do-this[]
diff --git a/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-do/kotlin/settings.gradle.kts b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-do/kotlin/settings.gradle.kts
new file mode 100644
index 0000000000000..1929ee9b9eb63
--- /dev/null
+++ b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-do/kotlin/settings.gradle.kts
@@ -0,0 +1,7 @@
+dependencyResolutionManagement {
+    repositories {
+        mavenCentral()
+    }
+}
+
+rootProject.name = "kotlin-std-lib-do"
diff --git a/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-do/kotlin/src/main/kotlin/org/example/Sample.kt b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-do/kotlin/src/main/kotlin/org/example/Sample.kt
new file mode 100644
index 0000000000000..78fc1c1d3c418
--- /dev/null
+++ b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-do/kotlin/src/main/kotlin/org/example/Sample.kt
@@ -0,0 +1,7 @@
+// tag::do-this[]
+class Sample {
+    fun joinStrings(strings: List<String>): String {
+        return strings.joinToString(separator = ", ") // <1>
+    }
+}
+// end::do-this[]
diff --git a/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-do/tests/kotlinStdLib-do.sample.conf b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-do/tests/kotlinStdLib-do.sample.conf
new file mode 100644
index 0000000000000..7ffebb82d6341
--- /dev/null
+++ b/platforms/documentation/docs/src/snippets/bestPractices/kotlinStdLib-do/tests/kotlinStdLib-do.sample.conf
@@ -0,0 +1,2 @@
+executable: gradle
+args: "compileKotlin"


Reviews:
user: login: lkasso
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-14T19:50:40Z

Review comments:
diff_hunk: @@ -15,4 +15,41 @@
 [[best_practices_for_dependencies]]
 = Best Practices for Dependencies
 
-Add content here.
+[[dont_depend_on_kotlin_stdlib]]
+== Don't Explicitly Depend on the Kotlin Standard Library
+:keywords: dependencies
+
+Kotlin Gradle Plugin automatically adds a dependency on the Kotlin standard library (`stdlib`) to each source set, so there is no need to add it explicitly.
path: platforms/documentation/docs/src/docs/userguide/best-practices/bp_dependencies.adoc
user: login: lkasso
body: ```suggestion
The Kotlin Gradle Plugin automatically adds a dependency on the Kotlin standard library (`stdlib`) to each source set, so there is no need to declare it explicitly.
```
created_at: 2025-04-14T19:45:14Z
author_association: MEMBER
diff_hunk: @@ -15,4 +15,41 @@
 [[best_practices_for_dependencies]]
 = Best Practices for Dependencies
 
-Add content here.
+[[dont_depend_on_kotlin_stdlib]]
+== Don't Explicitly Depend on the Kotlin Standard Library
+:keywords: dependencies
+
+Kotlin Gradle Plugin automatically adds a dependency on the Kotlin standard library (`stdlib`) to each source set, so there is no need to add it explicitly.
+
+=== Explanation
+
+The version of the standard library added is the same as the version of the Kotlin Gradle Plugin.
+If your build does not depend on a specific or different version of the standard library then an explicit dependency is not needed and shouldn't be added.
path: platforms/documentation/docs/src/docs/userguide/best-practices/bp_dependencies.adoc
user: login: lkasso
body: ```suggestion
If your build does not require a specific or different version of the standard library, you should avoid adding it manually.
```
created_at: 2025-04-14T19:47:59Z
author_association: MEMBER
diff_hunk: @@ -15,4 +15,41 @@
 [[best_practices_for_dependencies]]
 = Best Practices for Dependencies
 
-Add content here.
+[[dont_depend_on_kotlin_stdlib]]
+== Don't Explicitly Depend on the Kotlin Standard Library
+:keywords: dependencies
+
+Kotlin Gradle Plugin automatically adds a dependency on the Kotlin standard library (`stdlib`) to each source set, so there is no need to add it explicitly.
+
+=== Explanation
+
+The version of the standard library added is the same as the version of the Kotlin Gradle Plugin.
path: platforms/documentation/docs/src/docs/userguide/best-practices/bp_dependencies.adoc
user: login: lkasso
body: ```suggestion
The version of the standard library added is the same as the version of the Kotlin Gradle Plugin applied to the project.  
```
created_at: 2025-04-14T19:48:00Z
author_association: MEMBER
diff_hunk: @@ -15,4 +15,41 @@
 [[best_practices_for_dependencies]]
 = Best Practices for Dependencies
 
-Add content here.
+[[dont_depend_on_kotlin_stdlib]]
+== Don't Explicitly Depend on the Kotlin Standard Library
+:keywords: dependencies
+
+Kotlin Gradle Plugin automatically adds a dependency on the Kotlin standard library (`stdlib`) to each source set, so there is no need to add it explicitly.
+
+=== Explanation
+
+The version of the standard library added is the same as the version of the Kotlin Gradle Plugin.
+If your build does not depend on a specific or different version of the standard library then an explicit dependency is not needed and shouldn't be added.
+
+Note that setting the `kotlin.stdlib.default.dependency` property to `false` prevents the Kotlin plugin from automatically adding the Kotlin standard library dependency to your project which can be useful in specific scenarios, such as when you want to manage the Kotlin standard library dependency version manually.
path: platforms/documentation/docs/src/docs/userguide/best-practices/bp_dependencies.adoc
user: login: lkasso
body: I would consider even removing the second sentence here because it's obvious/redundant:

```suggestion
NOTE: Setting the `kotlin.stdlib.default.dependency` property to `false` prevents the Kotlin plugin from automatically adding the Kotlin standard library dependency to your project. This can be useful in specific scenarios, such as when you want to manage the Kotlin standard library dependency version manually.
```
created_at: 2025-04-14T19:49:37Z
author_association: MEMBER
diff_hunk: @@ -15,4 +15,41 @@
 [[best_practices_for_dependencies]]
 = Best Practices for Dependencies
 
-Add content here.
+[[dont_depend_on_kotlin_stdlib]]
+== Don't Explicitly Depend on the Kotlin Standard Library
+:keywords: dependencies
+
+Kotlin Gradle Plugin automatically adds a dependency on the Kotlin standard library (`stdlib`) to each source set, so there is no need to add it explicitly.
+
+=== Explanation
+
+The version of the standard library added is the same as the version of the Kotlin Gradle Plugin.
+If your build does not depend on a specific or different version of the standard library then an explicit dependency is not needed and shouldn't be added.
+
+Note that setting the `kotlin.stdlib.default.dependency` property to `false` prevents the Kotlin plugin from automatically adding the Kotlin standard library dependency to your project which can be useful in specific scenarios, such as when you want to manage the Kotlin standard library dependency version manually.
+
+=== Example
+
+==== Don't Do This
+
+====
+include::sample[dir="snippets/bestPractices/kotlinStdLib-avoid/kotlin",files="build.gradle.kts[tags=avoid-this]"]
+include::sample[dir="snippets/bestPractices/kotlinStdLib-avoid/groovy",files="build.gradle[tags=avoid-this]"]
+====
+
+<1> *`stdlib` is explicitly depended upon*: This project contains an implicit dependency on the Kotlin standard library, which is required to compile its source code.
+
+==== Do This Instead
+
+====
+include::sample[dir="snippets/bestPractices/kotlinStdLib-do/kotlin",files="build.gradle.kts[tags=do-this]"]
+include::sample[dir="snippets/bestPractices/kotlinStdLib-do/groovy",files="build.gradle[tags=do-this]"]
+====
+
+*`stdlib` dependency is not included explicitly*: The standard library remains available for use, and source code requiring it can be compiled without any issues.
+
+=== References
+- https://docs.gradle.org/current/kotlin-dsl/gradle/org.gradle.kotlin.dsl/kotlin.html[the kotlin() function]
path: platforms/documentation/docs/src/docs/userguide/best-practices/bp_dependencies.adoc
user: login: lkasso
body: ```suggestion
- https://docs.gradle.org/current/kotlin-dsl/gradle/org.gradle.kotlin.dsl/kotlin.html[the `kotlin()` function]
```
created_at: 2025-04-14T19:50:08Z
author_association: MEMBER

PR comments:
user: login: tresat
created_at: 2025-04-14T16:08:33Z
body: @bot-gradle test this
author_association: MEMBER
user: login: bot-gradle
created_at: 2025-04-14T16:08:37Z
body: <!-- {"replyTargetCommentId":2802206325,"triggeredTeamCityBuilds":[{"buildConfigurationId":"Gradle_Release_Check_Stage_PullRequestFeedback_Trigger","buildId":"97186290","headRef":"79a833fafb50fbc8aa3e99656e63df73353796e4"}]} -->
I've triggered the following builds:
- [Pull Request Feedback (Trigger) (Check)](https://builds.gradle.org/build/97186290)
  - [Build Scan](https://ge.gradle.org/scans?search.tags=CI&amp;search.names=gitCommitId,PartOf&amp;search.values=79a833fafb50fbc8aa3e99656e63df73353796e4,PullRequestFeedback&amp;)

author_association: COLLABORATOR
user: login: bot-gradle
created_at: 2025-04-14T17:04:49Z
body: The following builds have failed:
- [Pull Request Feedback (Trigger) (Check)](https://builds.gradle.org/buildConfiguration/Gradle_Release_Check_Stage_PullRequestFeedback_Trigger/97186290)
  - [Build Scan](https://ge.gradle.org/scans?search.buildOutcome=failure&amp;search.tags=CI&amp;search.names=gitCommitId&amp;search.values=79a833fafb50fbc8aa3e99656e63df73353796e4&amp;)

author_association: COLLABORATOR
user: login: fprochazka
created_at: 2025-04-14T18:19:28Z
body: I think that this best practice should also address how to add optional dependency on the stdlib - for projects that are mainly written in java and add some minor kotlin-quality-of-life improvements - I don't want to polute dependencies of my library by pulling in the stdlib for a few functions. 
author_association: NONE
user: login: tresat
created_at: 2025-04-14T20:03:20Z
body: @bot-gradle test this
author_association: MEMBER
user: login: bot-gradle
created_at: 2025-04-14T20:03:26Z
body: <!-- {"replyTargetCommentId":2802857902,"triggeredTeamCityBuilds":[{"buildConfigurationId":"Gradle_Release_Check_Stage_PullRequestFeedback_Trigger","buildId":"97194356","headRef":"38411cbe219a0f0529faf2eabf9fc0eb9423fa47"}]} -->
I've triggered the following builds:
- [Pull Request Feedback (Trigger) (Check)](https://builds.gradle.org/build/97194356)
  - [Build Scan](https://ge.gradle.org/scans?search.tags=CI&amp;search.names=gitCommitId,PartOf&amp;search.values=38411cbe219a0f0529faf2eabf9fc0eb9423fa47,PullRequestFeedback&amp;)

author_association: COLLABORATOR
user: login: bot-gradle
created_at: 2025-04-14T21:09:50Z
body: The following builds have failed:
- [Pull Request Feedback (Trigger) (Check)](https://builds.gradle.org/buildConfiguration/Gradle_Release_Check_Stage_PullRequestFeedback_Trigger/97194356)
  - [Build Scan](https://ge.gradle.org/scans?search.buildOutcome=failure&amp;search.tags=CI&amp;search.names=gitCommitId&amp;search.values=38411cbe219a0f0529faf2eabf9fc0eb9423fa47&amp;)

author_association: COLLABORATOR
user: login: tresat
created_at: 2025-04-15T13:49:36Z
body: @bot-gradle test this
author_association: MEMBER
user: login: bot-gradle
created_at: 2025-04-15T13:49:44Z
body: <!-- {"replyTargetCommentId":2805126469,"triggeredTeamCityBuilds":[{"buildConfigurationId":"Gradle_Release_Check_Stage_PullRequestFeedback_Trigger","buildId":"97234067","headRef":"304bf65f39f7faab366473277cf70ce96965ac28"}]} -->
I've triggered the following builds:
- [Pull Request Feedback (Trigger) (Check)](https://builds.gradle.org/build/97234067)
  - [Build Scan](https://ge.gradle.org/scans?search.tags=CI&amp;search.names=gitCommitId,PartOf&amp;search.values=304bf65f39f7faab366473277cf70ce96965ac28,PullRequestFeedback&amp;)

author_association: COLLABORATOR
user: login: bot-gradle
created_at: 2025-04-15T19:15:13Z
body: The following builds have failed:
- [Pull Request Feedback (Trigger) (Check)](https://builds.gradle.org/buildConfiguration/Gradle_Release_Check_Stage_PullRequestFeedback_Trigger/97234067)
  - [Build Scan](https://ge.gradle.org/scans?search.buildOutcome=failure&amp;search.tags=CI&amp;search.names=gitCommitId&amp;search.values=304bf65f39f7faab366473277cf70ce96965ac28&amp;)

author_association: COLLABORATOR
user: login: tresat
created_at: 2025-04-18T18:57:19Z
body: @bot-gradle test and merge
author_association: MEMBER
user: login: tresat
created_at: 2025-04-18T19:01:19Z
body: @bot-gradle test and merge
author_association: MEMBER
user: login: tresat
created_at: 2025-04-21T13:27:07Z
body: @bot-gradle test and merge
author_association: MEMBER