You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@grails.apache.org by ma...@apache.org on 2026/08/06 10:12:37 UTC

(grails-core) 01/02: build: cleanup SLF4J warnings in the build output

This is an automated email from the ASF dual-hosted git repository.

matrei pushed a commit to branch remove-missing-slf4j-warnings
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit ae1a390db58839cc625de18b35a6176286e711b0
Author: Mattias Reichel <ma...@gmail.com>
AuthorDate: Thu Aug 6 12:11:42 2026 +0200

    build: cleanup SLF4J warnings in the build output
---
 grails-async/plugin/build.gradle                                 | 4 ++--
 grails-beans-dsl/build.gradle                                    | 2 ++
 grails-cache/build.gradle                                        | 6 ++++++
 grails-codecs/build.gradle                                       | 1 +
 grails-console/build.gradle                                      | 2 ++
 grails-controllers/build.gradle                                  | 1 +
 grails-converters/build.gradle                                   | 1 +
 grails-core-cli-legacy/build.gradle                              | 2 ++
 grails-core/build.gradle                                         | 2 ++
 grails-data-graphql/plugin/build.gradle                          | 4 ++++
 grails-data-hibernate5/core/build.gradle                         | 3 +++
 grails-data-hibernate5/dbmigration/build.gradle                  | 1 +
 grails-data-hibernate5/grails-plugin/build.gradle                | 4 ++++
 grails-data-hibernate7/core/build.gradle                         | 2 ++
 grails-data-hibernate7/dbmigration/build.gradle                  | 1 +
 grails-data-hibernate7/grails-plugin/build.gradle                | 5 +++++
 grails-data-mongodb/boot-plugin/build.gradle                     | 5 ++++-
 grails-data-mongodb/core/build.gradle                            | 3 ++-
 grails-data-mongodb/ext/build.gradle                             | 1 +
 grails-data-mongodb/grails-plugin/build.gradle                   | 2 ++
 grails-data-mongodb/spring-data/build.gradle                     | 4 +++-
 grails-databinding/build.gradle                                  | 1 +
 grails-datamapping-core-test/build.gradle                        | 2 +-
 grails-datamapping-core/build.gradle                             | 2 +-
 grails-datamapping-support/build.gradle                          | 3 ++-
 grails-datamapping-tck/build.gradle                              | 1 +
 grails-datasource/build.gradle                                   | 1 +
 grails-domain-class/build.gradle                                 | 1 +
 grails-encoder/build.gradle                                      | 2 ++
 grails-events/plugin/build.gradle                                | 7 ++++---
 grails-fields/build.gradle                                       | 2 ++
 grails-geb/build.gradle                                          | 1 +
 grails-gsp/core/build.gradle                                     | 6 +++---
 grails-gsp/grails-layout/build.gradle                            | 4 ++++
 grails-gsp/grails-taglib/build.gradle                            | 5 +++--
 grails-gsp/grails-web-gsp-taglib/build.gradle                    | 2 ++
 grails-gsp/grails-web-gsp/build.gradle                           | 4 ++--
 grails-gsp/grails-web-jsp/build.gradle                           | 2 ++
 grails-gsp/grails-web-taglib/build.gradle                        | 3 ++-
 grails-gsp/plugin/build.gradle                                   | 9 +++++++--
 grails-i18n/build.gradle                                         | 1 +
 grails-interceptors/build.gradle                                 | 1 +
 grails-logging/build.gradle                                      | 2 ++
 grails-mail/build.gradle                                         | 5 ++++-
 grails-mimetypes/build.gradle                                    | 1 +
 grails-redis/build.gradle                                        | 2 +-
 grails-rest-transforms/build.gradle                              | 1 +
 grails-scaffolding/build.gradle                                  | 7 +++++++
 grails-services/build.gradle                                     | 1 +
 grails-spring-security/ldap/plugin/build.gradle                  | 4 ++++
 grails-spring-security/oauth2/plugin/build.gradle                | 4 +++-
 grails-spring-security/plugin/build.gradle                       | 4 ++++
 grails-spring-security/rest/core/build.gradle                    | 3 +++
 grails-spring-security/rest/gorm/build.gradle                    | 1 +
 grails-spring-security/rest/grailscache/build.gradle             | 3 +++
 grails-spring-security/rest/memcached/build.gradle               | 1 +
 grails-spring-security/rest/redis/build.gradle                   | 1 +
 grails-spring-security/ui/plugin/build.gradle                    | 4 ++++
 grails-test-core/build.gradle                                    | 1 +
 grails-test-examples/beans-dsl-plugin/build.gradle               | 4 ++++
 grails-test-examples/gsp-layout/build.gradle                     | 4 ++++
 grails-test-examples/hibernate5/criteria-extension/build.gradle  | 4 ++++
 .../hibernate5/grails-data-service-multi-datasource/build.gradle | 2 ++
 .../hibernate5/grails-hibernate-groovy-proxy/build.gradle        | 4 ++++
 .../hibernate5/grails-multiple-datasources/build.gradle          | 2 ++
 .../hibernate5/grails-multitenant-multi-datasource/build.gradle  | 2 ++
 grails-test-examples/hibernate7/criteria-extension/build.gradle  | 4 ++++
 .../hibernate7/grails-data-service-multi-datasource/build.gradle | 2 ++
 .../hibernate7/grails-hibernate-groovy-proxy/build.gradle        | 4 ++++
 .../hibernate7/grails-multiple-datasources/build.gradle          | 2 ++
 .../hibernate7/grails-multitenant-multi-datasource/build.gradle  | 2 ++
 grails-test-examples/mail/build.gradle                           | 2 ++
 grails-test-examples/mongodb/test-data-service/build.gradle      | 2 ++
 grails-test-examples/redis/build.gradle                          | 4 ++++
 .../spring-security/acl/functional-test-app/build.gradle         | 2 ++
 .../spring-security/acl/integration-test-app/build.gradle        | 2 ++
 grails-test-examples/spring-security/cas/test1/build.gradle      | 2 ++
 .../spring-security/core/functional-test-app/build.gradle        | 2 ++
 .../spring-security/core/integration-test-app/build.gradle       | 2 ++
 .../core/misc-functional-test-app/group/build.gradle             | 2 ++
 .../core/misc-functional-test-app/roles/build.gradle             | 2 ++
 .../ldap/custom-user-details-context-mapper/build.gradle         | 2 ++
 .../spring-security/ldap/functional-test-app/build.gradle        | 2 ++
 .../spring-security/ldap/retrieve-db-roles/build.gradle          | 2 ++
 .../spring-security/ldap/retrieve-group-roles/build.gradle       | 2 ++
 grails-test-examples/spring-security/ui/common/build.gradle      | 3 +++
 grails-test-examples/spring-security/ui/extended/build.gradle    | 4 +++-
 grails-test-examples/undertow/build.gradle                       | 2 ++
 grails-test-suite-base/build.gradle                              | 1 +
 grails-test-suite-web/build.gradle                               | 2 ++
 grails-testing-support-core/build.gradle                         | 2 ++
 grails-testing-support-datamapping/build.gradle                  | 1 +
 grails-testing-support-http-client/build.gradle                  | 5 +++--
 grails-testing-support-views-gson/build.gradle                   | 2 ++
 grails-testing-support-web/build.gradle                          | 2 ++
 grails-undertow/plugin/build.gradle                              | 3 +++
 grails-url-mappings/build.gradle                                 | 1 +
 grails-validation/build.gradle                                   | 1 +
 grails-views-core/build.gradle                                   | 4 +++-
 grails-views-gson/build.gradle                                   | 6 ++++--
 grails-views-markup/build.gradle                                 | 3 ++-
 grails-web-boot/build.gradle                                     | 1 +
 grails-web-common/build.gradle                                   | 2 ++
 grails-web-core/build.gradle                                     | 1 +
 grails-web-databinding/build.gradle                              | 1 +
 grails-web-mvc/build.gradle                                      | 1 +
 grails-web-url-mappings/build.gradle                             | 2 ++
 107 files changed, 246 insertions(+), 31 deletions(-)

diff --git a/grails-async/plugin/build.gradle b/grails-async/plugin/build.gradle
index 3a346c245d..c19f7c6c85 100644
--- a/grails-async/plugin/build.gradle
+++ b/grails-async/plugin/build.gradle
@@ -52,13 +52,13 @@ dependencies {
     implementation 'org.springframework:spring-web'
 
     compileOnly 'jakarta.servlet:jakarta.servlet-api' // Provided
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 
     testImplementation 'jakarta.servlet:jakarta.servlet-api'
+    testImplementation 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation and tests
     testImplementation 'org.spockframework:spock-core'
     testImplementation 'org.springframework:spring-test'
 
-    testRuntimeOnly 'org.slf4j:slf4j-nop' // Get rid of warning about missing slf4j implementation during test task
-
 }
 
 apply {
diff --git a/grails-beans-dsl/build.gradle b/grails-beans-dsl/build.gradle
index 9dd59528a8..e925c43f3b 100644
--- a/grails-beans-dsl/build.gradle
+++ b/grails-beans-dsl/build.gradle
@@ -63,6 +63,8 @@ dependencies {
     testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
     testImplementation 'org.spockframework:spock-core'
     testRuntimeOnly 'org.slf4j:slf4j-simple'
+
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 }
 
 apply {
diff --git a/grails-cache/build.gradle b/grails-cache/build.gradle
index 5534081f00..22cc05ce51 100644
--- a/grails-cache/build.gradle
+++ b/grails-cache/build.gradle
@@ -40,6 +40,9 @@ ext {
 
 dependencies {
     implementation platform(project(':grails-bom'))
+    astCompileOnly platform(project(':grails-bom'))
+
+    astCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 
     api project(':grails-core')
     api project(':grails-web-boot')
@@ -50,6 +53,7 @@ dependencies {
     api "com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:$concurrentlinkedhashmapLruVersion"
 
     compileOnly project(':grails-domain-class')
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 
     console project(':grails-console')
 
@@ -57,6 +61,8 @@ dependencies {
     testImplementation project(':grails-testing-support-web')
     testImplementation 'org.spockframework:spock-core'
 
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testRuntimeOnly 'net.bytebuddy:byte-buddy' // Required by Spock's mocking support
 }
 
diff --git a/grails-codecs/build.gradle b/grails-codecs/build.gradle
index eeaad5a2b9..8473b1e7d4 100644
--- a/grails-codecs/build.gradle
+++ b/grails-codecs/build.gradle
@@ -44,6 +44,7 @@ dependencies {
     runtimeOnly project(':grails-codecs-core')
 
     compileOnly 'jakarta.servlet:jakarta.servlet-api'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'org.springframework:spring-test', {
         // MockHttpServletRequest/Response/Context used in many classes
     }
diff --git a/grails-console/build.gradle b/grails-console/build.gradle
index 1961722672..2baf7a5f07 100644
--- a/grails-console/build.gradle
+++ b/grails-console/build.gradle
@@ -63,6 +63,8 @@ dependencies {
 
     api 'jakarta.servlet:jakarta.servlet-api'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testImplementation 'org.apache.groovy:groovy-test-junit5'
     testImplementation 'org.junit.jupiter:junit-jupiter-api'
     testImplementation 'org.junit.platform:junit-platform-suite'
diff --git a/grails-controllers/build.gradle b/grails-controllers/build.gradle
index 40addc53d9..91651c16ba 100644
--- a/grails-controllers/build.gradle
+++ b/grails-controllers/build.gradle
@@ -57,6 +57,7 @@ dependencies {
     testRuntimeOnly 'org.jline:jline'
 
     compileOnly 'jakarta.servlet:jakarta.servlet-api'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'org.springframework:spring-test'
 
     testImplementation 'jakarta.servlet:jakarta.servlet-api'
diff --git a/grails-converters/build.gradle b/grails-converters/build.gradle
index 02ebedf895..18b234ecd3 100644
--- a/grails-converters/build.gradle
+++ b/grails-converters/build.gradle
@@ -54,6 +54,7 @@ dependencies {
     testImplementation project(':grails-web-common')
 
     compileOnly 'jakarta.servlet:jakarta.servlet-api'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'org.springframework:spring-test', {
         // MockHttpServletRequest/Response/Context used in many classes
     }
diff --git a/grails-core-cli-legacy/build.gradle b/grails-core-cli-legacy/build.gradle
index cdf1ace8e9..682d796299 100644
--- a/grails-core-cli-legacy/build.gradle
+++ b/grails-core-cli-legacy/build.gradle
@@ -47,6 +47,8 @@ dependencies {
     api 'org.apache.groovy:groovy'
     implementation 'org.apache.groovy:groovy-templates'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testImplementation 'org.apache.groovy:groovy-test-junit5'
     testImplementation 'org.junit.jupiter:junit-jupiter-api'
     testImplementation 'org.junit.platform:junit-platform-suite'
diff --git a/grails-core/build.gradle b/grails-core/build.gradle
index ed40a28800..23128ada4f 100644
--- a/grails-core/build.gradle
+++ b/grails-core/build.gradle
@@ -91,6 +91,8 @@ dependencies {
     cliImplementation 'org.apache.groovy:groovy-json'
     cliImplementation 'org.apache.groovy:groovy-templates'
 
+    cliCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testImplementation 'org.springframework:spring-jdbc'
     testImplementation 'org.springframework.boot:spring-boot-test'
     // ApplicationContextRunner's signatures reach AssertJ through ApplicationContextAssertProvider;
diff --git a/grails-data-graphql/plugin/build.gradle b/grails-data-graphql/plugin/build.gradle
index c5a95ce670..ca91c48c7c 100644
--- a/grails-data-graphql/plugin/build.gradle
+++ b/grails-data-graphql/plugin/build.gradle
@@ -79,6 +79,7 @@ dependencies {
     // dependency stays `compileOnly` to avoid shipping anything new on the
     // production classpath.
     compileOnly 'org.springframework:spring-web'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 
     testImplementation project(':grails-testing-support-web')
     testImplementation 'org.spockframework:spock-core'
@@ -86,6 +87,9 @@ dependencies {
     testImplementation 'org.springframework:spring-web'
     testImplementation "io.github.cjstehno.ersatz:ersatz:$ersatzVersion"
     testImplementation "io.github.cjstehno.ersatz:ersatz-groovy:$ersatzVersion"
+
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testRuntimeOnly 'tools.jackson.core:jackson-databind'
     testRuntimeOnly 'net.bytebuddy:byte-buddy' // Required by Spock's mocking support
     testRuntimeOnly 'org.objenesis:objenesis' // Required by Spock for mocking classes without default constructor
diff --git a/grails-data-hibernate5/core/build.gradle b/grails-data-hibernate5/core/build.gradle
index 28dab355f5..58ec3d74f3 100644
--- a/grails-data-hibernate5/core/build.gradle
+++ b/grails-data-hibernate5/core/build.gradle
@@ -74,6 +74,9 @@ dependencies {
     testImplementation 'org.apache.groovy:groovy-json'
     testImplementation 'org.apache.tomcat:tomcat-jdbc'
     testImplementation 'org.spockframework:spock-core'
+
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testRuntimeOnly 'org.hibernate:hibernate-ehcache', {
         // exclude javax variant of hibernate-core 5.6
         exclude group: 'org.hibernate', module: 'hibernate-core'
diff --git a/grails-data-hibernate5/dbmigration/build.gradle b/grails-data-hibernate5/dbmigration/build.gradle
index 138a04757f..092193455e 100644
--- a/grails-data-hibernate5/dbmigration/build.gradle
+++ b/grails-data-hibernate5/dbmigration/build.gradle
@@ -85,6 +85,7 @@ dependencies {
     cliImplementation project(':grails-data-hibernate5')
     cliCompileOnly 'org.apache.groovy:groovy-sql'
     cliCompileOnly 'org.apache.groovy:groovy-xml'
+    cliCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     cliImplementation(project(':grails-shell-cli')) {
         exclude group: 'org.slf4j', module: 'slf4j-simple'
 
diff --git a/grails-data-hibernate5/grails-plugin/build.gradle b/grails-data-hibernate5/grails-plugin/build.gradle
index 2aa04bfe4c..741568fddf 100644
--- a/grails-data-hibernate5/grails-plugin/build.gradle
+++ b/grails-data-hibernate5/grails-plugin/build.gradle
@@ -54,6 +54,7 @@ dependencies {
             requireCapability('org.apache.grails:grails-core-cli')
         }
     }
+    cliCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 
     // TODO: Clarify and clean up dependencies
     implementation platform(project(':grails-hibernate5-bom'))
@@ -77,6 +78,7 @@ dependencies {
     compileOnly project(':grails-bootstrap')
     compileOnly project(':grails-core')
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'org.spockframework:spock-core', {
         exclude group: 'junit', module: 'junit-dep'
         exclude group: 'org.codehaus.groovy', module: 'groovy-all'
@@ -87,6 +89,8 @@ dependencies {
     testImplementation 'org.spockframework:spock-core'
     testImplementation 'jakarta.servlet:jakarta.servlet-api'
 
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testRuntimeOnly 'com.h2database:h2'
     testRuntimeOnly 'org.apache.tomcat:tomcat-jdbc'
     testRuntimeOnly 'org.hibernate:hibernate-ehcache', {
diff --git a/grails-data-hibernate7/core/build.gradle b/grails-data-hibernate7/core/build.gradle
index a9d7a481ac..2e464bc579 100644
--- a/grails-data-hibernate7/core/build.gradle
+++ b/grails-data-hibernate7/core/build.gradle
@@ -117,6 +117,8 @@ dependencies {
     testImplementation 'org.apache.tomcat:tomcat-jdbc'
     testImplementation 'org.spockframework:spock-core'
 
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testRuntimeOnly 'org.slf4j:slf4j-simple'
     testRuntimeOnly 'org.slf4j:jcl-over-slf4j'
     testRuntimeOnly 'org.springframework:spring-aop'
diff --git a/grails-data-hibernate7/dbmigration/build.gradle b/grails-data-hibernate7/dbmigration/build.gradle
index 33112eb5cc..ef0d22f552 100644
--- a/grails-data-hibernate7/dbmigration/build.gradle
+++ b/grails-data-hibernate7/dbmigration/build.gradle
@@ -82,6 +82,7 @@ dependencies {
     cliImplementation project(':grails-data-hibernate7')
     cliCompileOnly 'org.apache.groovy:groovy-sql'
     cliCompileOnly 'org.apache.groovy:groovy-xml'
+    cliCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     cliImplementation(project(':grails-shell-cli')) {
         exclude group: 'org.slf4j', module: 'slf4j-simple'
 
diff --git a/grails-data-hibernate7/grails-plugin/build.gradle b/grails-data-hibernate7/grails-plugin/build.gradle
index 01e9a4df2e..492c81a4fe 100644
--- a/grails-data-hibernate7/grails-plugin/build.gradle
+++ b/grails-data-hibernate7/grails-plugin/build.gradle
@@ -56,6 +56,8 @@ dependencies {
     // SchemaExport lives in hibernate-tools, which is implementation-scoped in the main tier
     cliImplementation 'org.hibernate.tool:hibernate-tools-orm'
 
+    cliCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     implementation platform(project(':grails-hibernate7-bom'))
 
     api 'org.springframework.boot:spring-boot'
@@ -81,6 +83,7 @@ dependencies {
     compileOnly project(':grails-bootstrap')
     compileOnly project(':grails-core')
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'org.spockframework:spock-core', {
         exclude group: 'junit', module: 'junit-dep'
         exclude group: 'org.codehaus.groovy', module: 'groovy-all'
@@ -91,6 +94,8 @@ dependencies {
     testImplementation 'org.spockframework:spock-core'
     testImplementation 'jakarta.servlet:jakarta.servlet-api'
 
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testRuntimeOnly 'com.h2database:h2'
     testRuntimeOnly 'org.apache.tomcat:tomcat-jdbc'
     testRuntimeOnly 'org.hibernate.orm:hibernate-jcache'
diff --git a/grails-data-mongodb/boot-plugin/build.gradle b/grails-data-mongodb/boot-plugin/build.gradle
index 1b31495f9d..310fe24340 100644
--- a/grails-data-mongodb/boot-plugin/build.gradle
+++ b/grails-data-mongodb/boot-plugin/build.gradle
@@ -100,11 +100,14 @@ dependencies {
     compileOnly 'org.slf4j:slf4j-api', {
         // "optional" compile dependency in mongodb-driver-core
     }
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 
+    testImplementation project(':grails-testing-support-mongodb')
     testImplementation 'org.spockframework:spock-core'
 
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testRuntimeOnly 'org.slf4j:slf4j-nop'
-    testImplementation project(':grails-testing-support-mongodb')
 }
 
 apply {
diff --git a/grails-data-mongodb/core/build.gradle b/grails-data-mongodb/core/build.gradle
index 37099e2eff..e332d08a0e 100644
--- a/grails-data-mongodb/core/build.gradle
+++ b/grails-data-mongodb/core/build.gradle
@@ -123,6 +123,7 @@ dependencies {
     }
 
     compileOnly 'org.apache.groovy:groovy'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'com.github.ben-manes.caffeine:caffeine', {
         // comp: RemovalCause, this should perhaps be api in data-mapping as it is needed for compilation downstream
     }
@@ -139,12 +140,12 @@ dependencies {
         // test: GenericWebApplicationContext requires ServletContext on the classpath
     }
 
+    testImplementation 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation and tests
     testImplementation 'org.testcontainers:testcontainers'
     testImplementation 'org.testcontainers:testcontainers-mongodb'
     testImplementation 'org.testcontainers:testcontainers-spock'
 
     testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
-    testRuntimeOnly 'org.slf4j:slf4j-nop' // Get rid of warning about missing slf4j implementation during tests
 }
 
 apply {
diff --git a/grails-data-mongodb/ext/build.gradle b/grails-data-mongodb/ext/build.gradle
index a92d4b9cb2..4186f26b49 100644
--- a/grails-data-mongodb/ext/build.gradle
+++ b/grails-data-mongodb/ext/build.gradle
@@ -86,6 +86,7 @@ dependencies {
     compileOnly 'org.slf4j:slf4j-api', {
         // "optional" compile dependency in mongodb-driver-core
     }
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 }
 
 apply {
diff --git a/grails-data-mongodb/grails-plugin/build.gradle b/grails-data-mongodb/grails-plugin/build.gradle
index 047d52bacf..29d957d0a2 100644
--- a/grails-data-mongodb/grails-plugin/build.gradle
+++ b/grails-data-mongodb/grails-plugin/build.gradle
@@ -85,6 +85,7 @@ dependencies {
     }
 
     compileOnly 'org.apache.groovy:groovy' // Provided as this is a Grails plugin
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly project(':grails-core'), { // Provided as this is a Grails plugin
         // api: GrailsPlugin
         // impl: DomainClassArtefactHandler, GrailsClass, GrailsPlugin, Metadata
@@ -114,6 +115,7 @@ dependencies {
     testFixturesImplementation 'org.spockframework:spock-core'
 
     testFixturesCompileOnly 'org.apache.groovy:groovy'
+    testFixturesCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 }
 
 def disabledTasks = ['bootRun', 'bootTestRun']
diff --git a/grails-data-mongodb/spring-data/build.gradle b/grails-data-mongodb/spring-data/build.gradle
index d78fc1565e..1b6dc5e4de 100644
--- a/grails-data-mongodb/spring-data/build.gradle
+++ b/grails-data-mongodb/spring-data/build.gradle
@@ -63,6 +63,8 @@ dependencies {
         // impl: @AutoConfiguration, @ConditionalOnClass/Bean, @AutoConfigureAfter
     }
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testImplementation 'org.spockframework:spock-core'
     testImplementation project(':grails-testing-support-mongodb')
     testImplementation 'org.springframework.boot:spring-boot-test', {
@@ -71,7 +73,7 @@ dependencies {
     testImplementation 'org.assertj:assertj-core', {
         // test: required by Spring Boot's AssertableApplicationContext
     }
-    testRuntimeOnly 'org.slf4j:slf4j-nop'
+    testImplementation 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation and tests
 }
 
 apply {
diff --git a/grails-databinding/build.gradle b/grails-databinding/build.gradle
index 5035930ef2..cf718ac0af 100644
--- a/grails-databinding/build.gradle
+++ b/grails-databinding/build.gradle
@@ -51,6 +51,7 @@ dependencies {
     testImplementation project(':grails-testing-support-core')
 
     compileOnly 'jakarta.servlet:jakarta.servlet-api'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'org.springframework:spring-test', {
         // MockHttpServletRequest/Response/Context used in many classes
     }
diff --git a/grails-datamapping-core-test/build.gradle b/grails-datamapping-core-test/build.gradle
index e1a969d13a..582631f877 100644
--- a/grails-datamapping-core-test/build.gradle
+++ b/grails-datamapping-core-test/build.gradle
@@ -122,7 +122,7 @@ dependencies {
     // Use the simple datastore to ensure the base implementation works correctly
     api project(':grails-data-simple')
 
-    testRuntimeOnly 'org.slf4j:slf4j-nop' // Get rid of warning about missing slf4j implementation during tests
+    testImplementation 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation and tests
 
     runtimeOnly 'org.apache.groovy:groovy-dateutil', {
         // Groovy Date Utils Extensions are used in the tests
diff --git a/grails-datamapping-core/build.gradle b/grails-datamapping-core/build.gradle
index 8f9530e409..67e393f593 100644
--- a/grails-datamapping-core/build.gradle
+++ b/grails-datamapping-core/build.gradle
@@ -111,8 +111,8 @@ dependencies {
     testImplementation 'org.spockframework:spock-core'
 
     testImplementation 'com.zaxxer:HikariCP'
+    testImplementation 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation and tests
     testRuntimeOnly 'com.h2database:h2'
-    testRuntimeOnly 'org.slf4j:slf4j-nop' // Get rid of warning about missing slf4j implementation during tests
 }
 
 //compileGroovy.groovyOptions.forkOptions.jvmArgs = ['-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005']
diff --git a/grails-datamapping-support/build.gradle b/grails-datamapping-support/build.gradle
index 1dd3a3bce0..ddbc035b85 100644
--- a/grails-datamapping-support/build.gradle
+++ b/grails-datamapping-support/build.gradle
@@ -106,10 +106,11 @@ dependencies {
     compileOnly 'org.apache.groovy:groovy', {
         // comp: CompileStatic
     }
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 
     testImplementation 'org.spockframework:spock-core'
 
-    testRuntimeOnly 'org.slf4j:slf4j-nop' // Get rid of warning about missing slf4j implementation during tests
+    testImplementation 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation and tests
 }
 
 tasks.withType(Jar).configureEach {
diff --git a/grails-datamapping-tck/build.gradle b/grails-datamapping-tck/build.gradle
index ff5781d702..10c3dc96f1 100644
--- a/grails-datamapping-tck/build.gradle
+++ b/grails-datamapping-tck/build.gradle
@@ -41,6 +41,7 @@ ext {
 dependencies {
     implementation platform(project(':grails-bom'))
     compileOnly 'org.apache.groovy:groovy'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'org.spockframework:spock-core'
     api project(':grails-datastore-core'), {
         // api: AbstractPersistenceEvent, AbstractPersistenceEventListener, AbstractQueryEvent, Datastore,
diff --git a/grails-datasource/build.gradle b/grails-datasource/build.gradle
index aadc75b49e..0e91d9be5f 100644
--- a/grails-datasource/build.gradle
+++ b/grails-datasource/build.gradle
@@ -46,6 +46,7 @@ dependencies {
     api project(':grails-datastore-core')
 
     compileOnly 'org.apache.tomcat:tomcat-jdbc'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 
     api project(':grails-core')
 
diff --git a/grails-domain-class/build.gradle b/grails-domain-class/build.gradle
index 8bb2f88b7a..69b7b019cc 100644
--- a/grails-domain-class/build.gradle
+++ b/grails-domain-class/build.gradle
@@ -61,6 +61,7 @@ dependencies {
     }
 
     compileOnly 'jakarta.servlet:jakarta.servlet-api'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'org.springframework:spring-test', {
         // MockHttpServletRequest/Response/Context used in many classes
     }
diff --git a/grails-encoder/build.gradle b/grails-encoder/build.gradle
index 28d635bde1..c2d8066a43 100644
--- a/grails-encoder/build.gradle
+++ b/grails-encoder/build.gradle
@@ -45,6 +45,8 @@ dependencies {
         // HtmlUtils is used from spring-web
     }
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testImplementation 'org.apache.groovy:groovy-test-junit5'
     testImplementation 'org.junit.jupiter:junit-jupiter-api'
     testImplementation 'org.junit.platform:junit-platform-suite'
diff --git a/grails-events/plugin/build.gradle b/grails-events/plugin/build.gradle
index 049ec61347..4989aa8c76 100644
--- a/grails-events/plugin/build.gradle
+++ b/grails-events/plugin/build.gradle
@@ -46,14 +46,15 @@ dependencies {
 
     // As this is a plugin these dependencies will be provided by the Grails application
     // This removes circular dependencies
-    compileOnly 'org.apache.grails.gradle:grails-gradle-model'
     compileOnly project(':grails-core')
+    compileOnly 'org.apache.grails.gradle:grails-gradle-model'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 
-    testImplementation 'org.spockframework:spock-core'
     testImplementation project(':grails-core')
+    testImplementation 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation and tests
+    testImplementation 'org.spockframework:spock-core'
 
     testRuntimeOnly 'org.apache.grails.gradle:grails-gradle-model'
-    testRuntimeOnly 'org.slf4j:slf4j-nop' // Get rid of warning about missing slf4j implementation during test task
 }
 
 apply {
diff --git a/grails-fields/build.gradle b/grails-fields/build.gradle
index 57cf832b32..926a3ee52d 100644
--- a/grails-fields/build.gradle
+++ b/grails-fields/build.gradle
@@ -59,6 +59,8 @@ dependencies {
         exclude module: 'asm'
     }
 
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testRuntimeOnly 'org.objenesis:objenesis' // Required by Spock for mocking classes without default constructor
 }
 
diff --git a/grails-geb/build.gradle b/grails-geb/build.gradle
index e2ff9bcb19..00dfc60ddb 100644
--- a/grails-geb/build.gradle
+++ b/grails-geb/build.gradle
@@ -45,6 +45,7 @@ dependencies {
     testFixturesImplementation platform(project(':grails-bom'))
 
     compileOnly project(':grails-core') // Provided, as this is a Grails plugin
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 
     testFixturesCompileOnly 'jakarta.servlet:jakarta.servlet-api'
     testFixturesCompileOnly 'org.slf4j:slf4j-simple' // Remove compilation warning about missing slf4j impl
diff --git a/grails-gsp/core/build.gradle b/grails-gsp/core/build.gradle
index 008adddf10..c9c043b264 100644
--- a/grails-gsp/core/build.gradle
+++ b/grails-gsp/core/build.gradle
@@ -48,6 +48,8 @@ dependencies {
     // GSP rendering/compilation Micrometer instrumentation (gsp.view/template/layout/compile + cache counters)
     implementation 'io.micrometer:micrometer-observation'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
 //    api project(':grails-bootstrap'), { // ConfigMap
 //        // API dependencies in grails-bootstrap
 //        exclude group: 'org.yaml', module: 'snakeyaml'
@@ -90,10 +92,8 @@ dependencies {
 //    implementation 'org.springframework:spring-context' // ApplicationContext
 //
     testImplementation 'org.junit.jupiter:junit-jupiter-api'
+    testImplementation 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation and tests
     testImplementation 'org.spockframework:spock-core'
-
-    testRuntimeOnly 'org.slf4j:slf4j-nop'
-    // Get rid of warning about missing slf4j implementation during test compilation
 }
 
 apply {
diff --git a/grails-gsp/grails-layout/build.gradle b/grails-gsp/grails-layout/build.gradle
index d27159d79d..e4cb4f4517 100644
--- a/grails-gsp/grails-layout/build.gradle
+++ b/grails-gsp/grails-layout/build.gradle
@@ -45,6 +45,7 @@ dependencies {
     api project(':grails-web-taglib')
 
     compileOnly 'jakarta.servlet:jakarta.servlet-api' // Provided
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 
     implementation 'org.apache.groovy:groovy'
     implementation platform(project(':grails-bom'))
@@ -61,6 +62,9 @@ dependencies {
         // impl: MockHttpServletRequest
     }
     testImplementation project(':grails-testing-support-web')
+
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testRuntimeOnly 'net.bytebuddy:byte-buddy' // Required by Spock's mocking support
     testRuntimeOnly 'org.slf4j:slf4j-nop' // Get rid of warning about missing slf4j implementation during test task
 }
diff --git a/grails-gsp/grails-taglib/build.gradle b/grails-gsp/grails-taglib/build.gradle
index 5526d36f03..0fd0d35dc5 100644
--- a/grails-gsp/grails-taglib/build.gradle
+++ b/grails-gsp/grails-taglib/build.gradle
@@ -45,6 +45,8 @@ dependencies {
     api project(':grails-core')
     api project(':grails-encoder')
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
 //    api 'org.apache.grails:grails-core', { // InjectableGrailsClass, ArtefactHandlerAdapter, ArtefactInfo, GrailsClass, AbstractInjectableGrailsClass, GrailsApplication, EncodingStateRegistry, EncodingStateRegistryLookup
 //        // API dependencies in grails-core
 //        exclude group: 'org.apache.groovy', module: 'groovy'
@@ -80,9 +82,8 @@ dependencies {
 //    compileOnly 'org.apache.groovy:groovy' // Needed as there are Java files that reference Groovy classes
 //
     testImplementation 'org.junit.jupiter:junit-jupiter-api'
+    testImplementation 'org.slf4j:slf4j-nop' // Get rid of warning about missing slf4j implementation during compilation and tests
     testImplementation 'org.spockframework:spock-core'
-
-    testRuntimeOnly 'org.slf4j:slf4j-nop' // Get rid of warning about missing slf4j implementation during tests
 }
 
 apply {
diff --git a/grails-gsp/grails-web-gsp-taglib/build.gradle b/grails-gsp/grails-web-gsp-taglib/build.gradle
index 94a2211215..e8d6bac699 100644
--- a/grails-gsp/grails-web-gsp-taglib/build.gradle
+++ b/grails-gsp/grails-web-gsp-taglib/build.gradle
@@ -44,6 +44,8 @@ dependencies {
     implementation platform(project(':grails-bom'))
     api project(':grails-web-jsp')
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
 //    api project(':grails-taglib'), { // GrailsTagLibClass
 //        // API dependencies in grails-taglib
 //        exclude group: 'org.apache.grails', module: 'grails-core'
diff --git a/grails-gsp/grails-web-gsp/build.gradle b/grails-gsp/grails-web-gsp/build.gradle
index c5482747b3..9f1d35a3a6 100644
--- a/grails-gsp/grails-web-gsp/build.gradle
+++ b/grails-gsp/grails-web-gsp/build.gradle
@@ -44,6 +44,7 @@ dependencies {
     implementation platform(project(':grails-bom'))
     compileOnlyApi 'jakarta.servlet:jakarta.servlet-api' // api needed downstream to compile GSPs, and exposed by GroovyPageView/PageRenderer/GroovyPagesServlet
     compileOnly 'org.apache.ant:ant'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     api project(':grails-gsp-core')
     api project(':grails-web-common')
     api project(':grails-web-taglib')
@@ -128,10 +129,9 @@ dependencies {
         exclude group: 'org.springframework', module: 'spring-context-support'
     }
     testImplementation 'org.apache.groovy:groovy-xml'
+    testImplementation 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation and tests
     testImplementation 'org.spockframework:spock-core'
     testImplementation 'org.springframework:spring-test' // MockHttpServletRequest is transitively used by GrailsWebMockUtils in grails-web-common
-
-    testRuntimeOnly 'org.slf4j:slf4j-nop' // Get rid of warning about missing slf4j implementation during tests
 }
 
 apply {
diff --git a/grails-gsp/grails-web-jsp/build.gradle b/grails-gsp/grails-web-jsp/build.gradle
index 556e569bcc..d689aa74e2 100644
--- a/grails-gsp/grails-web-jsp/build.gradle
+++ b/grails-gsp/grails-web-jsp/build.gradle
@@ -45,6 +45,8 @@ dependencies {
     api project(':grails-web-common')
     api project(':grails-web-gsp')
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     // Required for JSP support
     compileOnly "jakarta.servlet.jsp:jakarta.servlet.jsp-api:$jspApiVersion"
     compileOnly "jakarta.el:jakarta.el-api:$elApiVersion"
diff --git a/grails-gsp/grails-web-taglib/build.gradle b/grails-gsp/grails-web-taglib/build.gradle
index e47f9c1d20..42cf37437a 100644
--- a/grails-gsp/grails-web-taglib/build.gradle
+++ b/grails-gsp/grails-web-taglib/build.gradle
@@ -46,6 +46,7 @@ dependencies {
     api project(':grails-web-common')
     api project(':grails-taglib')
     compileOnly project(':grails-gsp-core')
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 
 //    compileOnlyApi 'jakarta.annotation:jakarta.annotation-api'
 //    compileOnlyApi 'jakarta.servlet:jakarta.servlet-api' // Needed downstream to compile for TagLibrary trait
@@ -103,11 +104,11 @@ dependencies {
 //    }
 //
     testImplementation project(':grails-gsp-core')
+    testImplementation 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation and tests
     testImplementation 'org.spockframework:spock-core'
     testImplementation 'org.springframework:spring-test'
 
     testRuntimeOnly 'jakarta.servlet:jakarta.servlet-api'
-    testRuntimeOnly 'org.slf4j:slf4j-nop' // Get rid of warning about missing slf4j implementation during tests
 }
 
 // The `grails.factories` resources file will be "copied" into the generated one, so do not also copy the original to prevent a copy conflict (see issue #10118)
diff --git a/grails-gsp/plugin/build.gradle b/grails-gsp/plugin/build.gradle
index bdcd3205c2..d18d85fd6f 100644
--- a/grails-gsp/plugin/build.gradle
+++ b/grails-gsp/plugin/build.gradle
@@ -136,6 +136,8 @@ dependencies {
     }
     implementation 'org.springframework:spring-beans' // PropertyEditorRegistry
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     astImplementation project(':grails-web-core'), {
         // API dependencies in grails-web
         exclude group: 'org.apache.grails.web', module: 'grails-web-common'
@@ -154,6 +156,8 @@ dependencies {
         exclude group: 'org.springframework.boot', module: 'spring-boot-autoconfigure'
     }
 
+    astCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly project(':grails-web-jsp'), { // Provided by Application for JSP support
         // API dependencies in grails-web-jsp
         exclude group: 'org.apache.grails.views', module: 'grails-web-gsp'
@@ -161,8 +165,6 @@ dependencies {
 
     api project(':grails-codecs') // Registers CodecLookup bean
 
-    testCompileOnly 'jakarta.annotation:jakarta.annotation-api'
-
     testImplementation project(':grails-web-jsp'), { // TagLibraryResolverImpl
         // API dependencies in grails-web-jsp
         exclude group: 'org.apache.grails.views', module: 'grails-web-gsp'
@@ -176,6 +178,9 @@ dependencies {
     testImplementation project(':grails-testing-support-core')
     testImplementation project(':grails-testing-support-web')
 
+    testCompileOnly 'jakarta.annotation:jakarta.annotation-api'
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testRuntimeOnly 'org.glassfish.web:jakarta.servlet.jsp.jstl'
     testRuntimeOnly project(':grails-url-mappings')
     testRuntimeOnly project(':grails-async')
diff --git a/grails-i18n/build.gradle b/grails-i18n/build.gradle
index 5829912665..933a353b94 100644
--- a/grails-i18n/build.gradle
+++ b/grails-i18n/build.gradle
@@ -45,6 +45,7 @@ dependencies {
     testCompileOnly 'org.apache.groovy:groovy-ant'
 
     compileOnly 'jakarta.servlet:jakarta.servlet-api'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'org.springframework.boot:spring-boot-webmvc'
     compileOnly 'org.springframework:spring-test', {
         // MockHttpServletRequest/Response/Context used in many classes
diff --git a/grails-interceptors/build.gradle b/grails-interceptors/build.gradle
index ba3756e23c..e623abba4e 100644
--- a/grails-interceptors/build.gradle
+++ b/grails-interceptors/build.gradle
@@ -44,6 +44,7 @@ dependencies {
     api 'org.apache.groovy:groovy'
 
     compileOnly 'jakarta.servlet:jakarta.servlet-api'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'org.springframework:spring-test', {
         // MockHttpServletRequest/Response/Context used in many classes
     }
diff --git a/grails-logging/build.gradle b/grails-logging/build.gradle
index 2dc5df068a..f252249774 100644
--- a/grails-logging/build.gradle
+++ b/grails-logging/build.gradle
@@ -41,6 +41,8 @@ dependencies {
     api project(':grails-core')
     api 'org.apache.groovy:groovy'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testImplementation 'org.apache.groovy:groovy-test-junit5'
     testImplementation 'org.junit.jupiter:junit-jupiter-api'
     testImplementation 'org.junit.platform:junit-platform-suite'
diff --git a/grails-mail/build.gradle b/grails-mail/build.gradle
index b18cbb8091..ff456e83c3 100644
--- a/grails-mail/build.gradle
+++ b/grails-mail/build.gradle
@@ -76,14 +76,17 @@ dependencies {
     compileOnly 'org.springframework.boot:spring-boot-autoconfigure' // @AutoConfiguration, @ConditionalOnProperty, @ConfigurationProperties
     compileOnly 'org.apache.groovy:groovy' // Provided as this is a Grails plugin
     compileOnly 'org.slf4j:slf4j-api' // @Slf4j
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 
     testImplementation project(':grails-testing-support-web')
     testImplementation 'jakarta.mail:jakarta.mail-api'
     testImplementation 'org.spockframework:spock-core'
     testImplementation 'org.springframework.boot:spring-boot-autoconfigure'
     testImplementation 'org.springframework.boot:spring-boot-test'
-    testRuntimeOnly 'org.assertj:assertj-core'
 
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
+    testRuntimeOnly 'org.assertj:assertj-core'
     testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
 }
 
diff --git a/grails-mimetypes/build.gradle b/grails-mimetypes/build.gradle
index 5adc12755a..08e61b7ebe 100644
--- a/grails-mimetypes/build.gradle
+++ b/grails-mimetypes/build.gradle
@@ -42,6 +42,7 @@ dependencies {
     api 'org.apache.groovy:groovy'
 
     compileOnly 'jakarta.servlet:jakarta.servlet-api'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'org.springframework:spring-test', {
         // MockHttpServletRequest/Response/Context used in many classes
     }
diff --git a/grails-redis/build.gradle b/grails-redis/build.gradle
index 5a8e163e62..ea79ffd199 100644
--- a/grails-redis/build.gradle
+++ b/grails-redis/build.gradle
@@ -66,9 +66,9 @@ dependencies {
     compileOnly 'org.slf4j:slf4j-nop' // Remove warning about missing slf4j implementation during gsp compilation
 
     testImplementation project(':grails-core')
+    testImplementation 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation and tests
     testImplementation 'org.spockframework:spock-core'
     testImplementation 'org.springframework:spring-beans'
-    testRuntimeOnly 'org.slf4j:slf4j-nop'
 
     integrationTestImplementation project(':grails-testing-support-redis')
     integrationTestImplementation project(':grails-testing-support-web')
diff --git a/grails-rest-transforms/build.gradle b/grails-rest-transforms/build.gradle
index aee0e0e12c..32cbb005b8 100644
--- a/grails-rest-transforms/build.gradle
+++ b/grails-rest-transforms/build.gradle
@@ -58,6 +58,7 @@ dependencies {
     testImplementation 'tools.jackson.core:jackson-databind'
 
     compileOnly 'jakarta.servlet:jakarta.servlet-api'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'org.springframework:spring-test', {
         // MockHttpServletRequest/Response/Context used in many classes
     }
diff --git a/grails-scaffolding/build.gradle b/grails-scaffolding/build.gradle
index 1f42d11b4d..8f8ca3f957 100644
--- a/grails-scaffolding/build.gradle
+++ b/grails-scaffolding/build.gradle
@@ -60,11 +60,16 @@ dependencies {
     }
     // GrailsConsole (used by the scaffolding commands) needs jline at compile time
     cliImplementation 'org.jline:jline'
+
+    cliCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     api project(':grails-fields')
     api project(':grails-rest-transforms')
 
     implementation project(':grails-gsp')
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testImplementation 'org.spockframework:spock-core'
     testImplementation project(':grails-layout')
     testImplementation project(':grails-web-gsp')
@@ -72,6 +77,8 @@ dependencies {
     testImplementation 'jakarta.servlet:jakarta.servlet-api'
     testImplementation 'org.springframework:spring-web'
     testImplementation 'net.bytebuddy:byte-buddy'
+
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 }
 
 apply {
diff --git a/grails-services/build.gradle b/grails-services/build.gradle
index 1cefa9aeae..10841e55bd 100644
--- a/grails-services/build.gradle
+++ b/grails-services/build.gradle
@@ -45,6 +45,7 @@ dependencies {
     api 'org.apache.groovy:groovy'
 
     compileOnly 'jakarta.servlet:jakarta.servlet-api'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'org.springframework:spring-test', {
         // MockHttpServletRequest/Response/Context used in many classes
     }
diff --git a/grails-spring-security/ldap/plugin/build.gradle b/grails-spring-security/ldap/plugin/build.gradle
index fe61583052..8967106a40 100644
--- a/grails-spring-security/ldap/plugin/build.gradle
+++ b/grails-spring-security/ldap/plugin/build.gradle
@@ -51,9 +51,13 @@ dependencies {
 		 'spring-core', 'spring-data-commons', 'spring-test', 'spring-tx'].each { exclude module: it }
 	}
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
 	runtimeOnly project(':grails-web-boot')
 
 	testImplementation project(':grails-testing-support-web')
+
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 }
 
 apply {
diff --git a/grails-spring-security/oauth2/plugin/build.gradle b/grails-spring-security/oauth2/plugin/build.gradle
index 98000a352e..62ad5e0934 100644
--- a/grails-spring-security/oauth2/plugin/build.gradle
+++ b/grails-spring-security/oauth2/plugin/build.gradle
@@ -57,7 +57,9 @@ dependencies {
 	// GrailsConsole (used by init-o-auth2) needs jline at compile time
 	cliImplementation 'org.jline:jline'
 
-	api project(':grails-spring-security'), {
+    cliCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
+    api project(':grails-spring-security'), {
 		// api: GrailsUserDetailsService, SpringSecurityService
 		// impl: GormUserDetailsService, GrailsUser, ReflectionUtils, @Secured(runtime), SecurityContextHolder,
 		//       SpringSecurityUtils
diff --git a/grails-spring-security/plugin/build.gradle b/grails-spring-security/plugin/build.gradle
index 90fc5e2750..17d4d21a33 100644
--- a/grails-spring-security/plugin/build.gradle
+++ b/grails-spring-security/plugin/build.gradle
@@ -58,6 +58,8 @@ dependencies {
 	// GrailsConsole (used by the s2-* commands) needs jline at compile time
 	cliImplementation 'org.jline:jline'
 
+    cliCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
 	api project(':grails-spring-security-compat')
 	api project(':grails-async') // AsyncGrailsWebRequest is used in public API
 	api project(':grails-mimetypes')
@@ -101,6 +103,8 @@ dependencies {
 	testFixturesImplementation 'org.springframework.security:spring-security-core'
 	testFixturesImplementation 'org.springframework.security:spring-security-config'
 
+    testFixturesCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
 	testImplementation project(':grails-testing-support-datamapping')
 	testImplementation project(':grails-testing-support-web')
 	testImplementation 'org.springframework:spring-test'
diff --git a/grails-spring-security/rest/core/build.gradle b/grails-spring-security/rest/core/build.gradle
index 8cb2518408..e74ead517c 100644
--- a/grails-spring-security/rest/core/build.gradle
+++ b/grails-spring-security/rest/core/build.gradle
@@ -115,6 +115,7 @@ dependencies {
     compileOnly 'jakarta.servlet:jakarta.servlet-api', { // Provided by Tomcat
         // api: FilterChain, HttpServletResponse, HttpServletRequest, ServletException, ServletRequest, ServletResponse
     }
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 
     testImplementation "org.pac4j:pac4j-oauth", {
         // impl: CasOAuthWrapperClient
@@ -123,6 +124,8 @@ dependencies {
     testImplementation project(':grails-testing-support-web')
     testImplementation 'org.spockframework:spock-core'
 
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testRuntimeOnly 'net.bytebuddy:byte-buddy'
 }
 
diff --git a/grails-spring-security/rest/gorm/build.gradle b/grails-spring-security/rest/gorm/build.gradle
index ce87544df2..dc4721103f 100644
--- a/grails-spring-security/rest/gorm/build.gradle
+++ b/grails-spring-security/rest/gorm/build.gradle
@@ -54,6 +54,7 @@ dependencies {
     }
 
     compileOnly 'org.apache.groovy:groovy' // Provided as this is a Grails plugin
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly project(':grails-core') // Provided as this is a Grails plugin
 }
 
diff --git a/grails-spring-security/rest/grailscache/build.gradle b/grails-spring-security/rest/grailscache/build.gradle
index bea51e6d0d..0bffc67de9 100644
--- a/grails-spring-security/rest/grailscache/build.gradle
+++ b/grails-spring-security/rest/grailscache/build.gradle
@@ -57,9 +57,12 @@ dependencies {
     }
 
     compileOnly project(':grails-core') // Provided as this is a Grails plugin
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'org.apache.groovy:groovy' // Provided as this is a Grails plugin
 
     testImplementation 'org.spockframework:spock-core'
+
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 }
 
 apply {
diff --git a/grails-spring-security/rest/memcached/build.gradle b/grails-spring-security/rest/memcached/build.gradle
index 0908378ebb..5c7d94ca95 100644
--- a/grails-spring-security/rest/memcached/build.gradle
+++ b/grails-spring-security/rest/memcached/build.gradle
@@ -59,6 +59,7 @@ dependencies {
     }
 
     compileOnly 'org.apache.groovy:groovy' // Provided as this is a Grails plugin
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly project(':grails-core') // Provided as this is a Grails plugin
 }
 
diff --git a/grails-spring-security/rest/redis/build.gradle b/grails-spring-security/rest/redis/build.gradle
index caed3d69f4..942cafac6a 100644
--- a/grails-spring-security/rest/redis/build.gradle
+++ b/grails-spring-security/rest/redis/build.gradle
@@ -60,6 +60,7 @@ dependencies {
     }
 
     compileOnly 'org.apache.groovy:groovy' // Provided as this is a Grails plugin
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly project(':grails-core') // Provided as this is a Grails plugin
 }
 
diff --git a/grails-spring-security/ui/plugin/build.gradle b/grails-spring-security/ui/plugin/build.gradle
index fb81b9cde7..b66d0f460d 100644
--- a/grails-spring-security/ui/plugin/build.gradle
+++ b/grails-spring-security/ui/plugin/build.gradle
@@ -59,10 +59,14 @@ dependencies {
     compileOnly project(':grails-services')
     compileOnly project(':grails-domain-class')
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'cloud.wondrify:asset-pipeline-grails'
 
     testImplementation project(':grails-testing-support-web')
     testImplementation 'org.spockframework:spock-core'
+
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 }
 
 // Ship the plugin views as templates (used by the s2ui-override command).
diff --git a/grails-test-core/build.gradle b/grails-test-core/build.gradle
index 10570622c2..8240a0a2d2 100644
--- a/grails-test-core/build.gradle
+++ b/grails-test-core/build.gradle
@@ -62,6 +62,7 @@ dependencies {
 
     compileOnly 'jakarta.servlet:jakarta.servlet-api'
     compileOnly 'org.jline:jline' // command line requirements
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'org.springframework:spring-test', {
         // MockHttpServletRequest/Response/Context used in many classes
     }
diff --git a/grails-test-examples/beans-dsl-plugin/build.gradle b/grails-test-examples/beans-dsl-plugin/build.gradle
index 4b5e56e05c..6882d34437 100644
--- a/grails-test-examples/beans-dsl-plugin/build.gradle
+++ b/grails-test-examples/beans-dsl-plugin/build.gradle
@@ -44,6 +44,8 @@ dependencies {
     api 'org.springframework.boot:spring-boot-autoconfigure'
     api 'org.springframework:spring-context'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testImplementation 'org.springframework.boot:spring-boot-test'
     testImplementation 'org.springframework:spring-test'
     testImplementation 'org.assertj:assertj-core'
@@ -55,6 +57,8 @@ dependencies {
     testImplementation 'org.spockframework:spock-core'
     testRuntimeOnly 'org.slf4j:slf4j-simple'
 
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     // functional-test-config.gradle does not supply the launcher that test-config.gradle does,
     // and these modules hold plain unit tests
     testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
diff --git a/grails-test-examples/gsp-layout/build.gradle b/grails-test-examples/gsp-layout/build.gradle
index c7b384dd7e..6f20012a7e 100644
--- a/grails-test-examples/gsp-layout/build.gradle
+++ b/grails-test-examples/gsp-layout/build.gradle
@@ -43,6 +43,8 @@ dependencies {
     implementation 'org.apache.grails:grails-controllers'
     implementation 'org.apache.grails:grails-rest-transforms'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testAndDevelopmentOnly platform(project(':grails-bom'))
     testAndDevelopmentOnly 'org.webjars.npm:bootstrap'
     testAndDevelopmentOnly 'org.webjars.npm:jquery'
@@ -68,6 +70,8 @@ dependencies {
     testImplementation 'org.spockframework:spock-core'
     testImplementation 'org.apache.grails:grails-testing-support-datamapping'
     testImplementation 'org.apache.grails:grails-testing-support-web'
+
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 }
 
 apply {
diff --git a/grails-test-examples/hibernate5/criteria-extension/build.gradle b/grails-test-examples/hibernate5/criteria-extension/build.gradle
index 8a0148a9b7..a0bbcc106b 100644
--- a/grails-test-examples/hibernate5/criteria-extension/build.gradle
+++ b/grails-test-examples/hibernate5/criteria-extension/build.gradle
@@ -35,6 +35,8 @@ dependencies {
     implementation 'jakarta.validation:jakarta.validation-api'
     implementation 'org.apache.grails:grails-core'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'com.h2database:h2'
     runtimeOnly 'com.zaxxer:HikariCP'
     runtimeOnly 'org.apache.grails:grails-databinding'
@@ -46,6 +48,8 @@ dependencies {
 
     testImplementation 'org.apache.grails.testing:grails-testing-support-core'
 
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     integrationTestImplementation 'org.apache.grails.testing:grails-testing-support-core'
 }
 
diff --git a/grails-test-examples/hibernate5/grails-data-service-multi-datasource/build.gradle b/grails-test-examples/hibernate5/grails-data-service-multi-datasource/build.gradle
index 3bee0ecfae..2a0236b600 100644
--- a/grails-test-examples/hibernate5/grails-data-service-multi-datasource/build.gradle
+++ b/grails-test-examples/hibernate5/grails-data-service-multi-datasource/build.gradle
@@ -34,6 +34,8 @@ dependencies {
     implementation 'org.apache.grails:grails-data-hibernate5'
     implementation 'org.apache.grails:grails-core'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'com.h2database:h2'
     runtimeOnly 'com.zaxxer:HikariCP'
     runtimeOnly 'org.apache.grails:grails-databinding'
diff --git a/grails-test-examples/hibernate5/grails-hibernate-groovy-proxy/build.gradle b/grails-test-examples/hibernate5/grails-hibernate-groovy-proxy/build.gradle
index 70dd149613..04d2b582e6 100644
--- a/grails-test-examples/hibernate5/grails-hibernate-groovy-proxy/build.gradle
+++ b/grails-test-examples/hibernate5/grails-hibernate-groovy-proxy/build.gradle
@@ -34,12 +34,16 @@ dependencies {
     implementation 'org.apache.grails:grails-data-hibernate5'
     implementation 'org.apache.grails:grails-core'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'com.h2database:h2'
     runtimeOnly 'com.zaxxer:HikariCP'
     runtimeOnly 'org.springframework.boot:spring-boot-autoconfigure'
     runtimeOnly 'org.springframework.boot:spring-boot-starter-logging'
 
     testImplementation 'org.apache.grails.testing:grails-testing-support-core'
+
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 }
 
 apply {
diff --git a/grails-test-examples/hibernate5/grails-multiple-datasources/build.gradle b/grails-test-examples/hibernate5/grails-multiple-datasources/build.gradle
index 3980877c98..2b180ba3ea 100644
--- a/grails-test-examples/hibernate5/grails-multiple-datasources/build.gradle
+++ b/grails-test-examples/hibernate5/grails-multiple-datasources/build.gradle
@@ -42,6 +42,8 @@ dependencies {
     implementation 'org.apache.grails:grails-core'
     implementation 'org.apache.grails:grails-domain-class'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'com.h2database:h2'
     runtimeOnly 'com.zaxxer:HikariCP'
     runtimeOnly 'org.apache.grails:grails-databinding'
diff --git a/grails-test-examples/hibernate5/grails-multitenant-multi-datasource/build.gradle b/grails-test-examples/hibernate5/grails-multitenant-multi-datasource/build.gradle
index 3bee0ecfae..2a0236b600 100644
--- a/grails-test-examples/hibernate5/grails-multitenant-multi-datasource/build.gradle
+++ b/grails-test-examples/hibernate5/grails-multitenant-multi-datasource/build.gradle
@@ -34,6 +34,8 @@ dependencies {
     implementation 'org.apache.grails:grails-data-hibernate5'
     implementation 'org.apache.grails:grails-core'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'com.h2database:h2'
     runtimeOnly 'com.zaxxer:HikariCP'
     runtimeOnly 'org.apache.grails:grails-databinding'
diff --git a/grails-test-examples/hibernate7/criteria-extension/build.gradle b/grails-test-examples/hibernate7/criteria-extension/build.gradle
index b204a358de..173e9707bf 100644
--- a/grails-test-examples/hibernate7/criteria-extension/build.gradle
+++ b/grails-test-examples/hibernate7/criteria-extension/build.gradle
@@ -35,6 +35,8 @@ dependencies {
     implementation 'jakarta.validation:jakarta.validation-api'
     implementation 'org.apache.grails:grails-core'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'com.h2database:h2'
     runtimeOnly 'com.zaxxer:HikariCP'
     runtimeOnly 'org.apache.grails:grails-databinding'
@@ -46,6 +48,8 @@ dependencies {
 
     testImplementation 'org.apache.grails.testing:grails-testing-support-core'
 
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     integrationTestImplementation 'org.apache.grails.testing:grails-testing-support-core'
 }
 
diff --git a/grails-test-examples/hibernate7/grails-data-service-multi-datasource/build.gradle b/grails-test-examples/hibernate7/grails-data-service-multi-datasource/build.gradle
index c8cec595f6..c281fd3a9d 100644
--- a/grails-test-examples/hibernate7/grails-data-service-multi-datasource/build.gradle
+++ b/grails-test-examples/hibernate7/grails-data-service-multi-datasource/build.gradle
@@ -33,6 +33,8 @@ dependencies {
     implementation 'org.apache.grails:grails-data-hibernate7'
     implementation 'org.apache.grails:grails-core'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'com.h2database:h2'
     runtimeOnly 'com.zaxxer:HikariCP'
     runtimeOnly 'org.apache.grails:grails-databinding'
diff --git a/grails-test-examples/hibernate7/grails-hibernate-groovy-proxy/build.gradle b/grails-test-examples/hibernate7/grails-hibernate-groovy-proxy/build.gradle
index ff10fa742c..673e4fa0db 100644
--- a/grails-test-examples/hibernate7/grails-hibernate-groovy-proxy/build.gradle
+++ b/grails-test-examples/hibernate7/grails-hibernate-groovy-proxy/build.gradle
@@ -33,12 +33,16 @@ dependencies {
     implementation 'org.apache.grails:grails-data-hibernate7'
     implementation 'org.apache.grails:grails-core'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'com.h2database:h2'
     runtimeOnly 'com.zaxxer:HikariCP'
     runtimeOnly 'org.springframework.boot:spring-boot-autoconfigure'
     runtimeOnly 'org.springframework.boot:spring-boot-starter-logging'
 
     testImplementation 'org.apache.grails.testing:grails-testing-support-core'
+
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 }
 
 apply {
diff --git a/grails-test-examples/hibernate7/grails-multiple-datasources/build.gradle b/grails-test-examples/hibernate7/grails-multiple-datasources/build.gradle
index 8f8e28c255..520daae833 100644
--- a/grails-test-examples/hibernate7/grails-multiple-datasources/build.gradle
+++ b/grails-test-examples/hibernate7/grails-multiple-datasources/build.gradle
@@ -41,6 +41,8 @@ dependencies {
     implementation 'org.apache.grails:grails-core'
     implementation 'org.apache.grails:grails-domain-class'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'com.h2database:h2'
     runtimeOnly 'com.zaxxer:HikariCP'
     runtimeOnly 'org.apache.grails:grails-databinding'
diff --git a/grails-test-examples/hibernate7/grails-multitenant-multi-datasource/build.gradle b/grails-test-examples/hibernate7/grails-multitenant-multi-datasource/build.gradle
index c8cec595f6..c281fd3a9d 100644
--- a/grails-test-examples/hibernate7/grails-multitenant-multi-datasource/build.gradle
+++ b/grails-test-examples/hibernate7/grails-multitenant-multi-datasource/build.gradle
@@ -33,6 +33,8 @@ dependencies {
     implementation 'org.apache.grails:grails-data-hibernate7'
     implementation 'org.apache.grails:grails-core'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'com.h2database:h2'
     runtimeOnly 'com.zaxxer:HikariCP'
     runtimeOnly 'org.apache.grails:grails-databinding'
diff --git a/grails-test-examples/mail/build.gradle b/grails-test-examples/mail/build.gradle
index aea8004a20..2b737a0e75 100644
--- a/grails-test-examples/mail/build.gradle
+++ b/grails-test-examples/mail/build.gradle
@@ -45,6 +45,8 @@ dependencies {
     testAndDevelopmentOnly 'org.webjars.npm:bootstrap-icons'
     testAndDevelopmentOnly 'org.webjars.npm:jquery'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'cloud.wondrify:asset-pipeline-grails'
     runtimeOnly 'org.apache.grails:grails-services'
     runtimeOnly 'org.apache.grails:grails-url-mappings'
diff --git a/grails-test-examples/mongodb/test-data-service/build.gradle b/grails-test-examples/mongodb/test-data-service/build.gradle
index 4f755e22f7..e602606070 100644
--- a/grails-test-examples/mongodb/test-data-service/build.gradle
+++ b/grails-test-examples/mongodb/test-data-service/build.gradle
@@ -42,6 +42,8 @@ dependencies {
     implementation 'org.apache.grails:grails-spring-security-rest'
     implementation 'org.apache.grails:grails-views-gson'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'org.apache.grails:grails-url-mappings'
     runtimeOnly 'org.apache.grails:grails-events'
     runtimeOnly 'org.springframework.boot:spring-boot-autoconfigure'
diff --git a/grails-test-examples/redis/build.gradle b/grails-test-examples/redis/build.gradle
index f801164797..f0b6d29a9a 100644
--- a/grails-test-examples/redis/build.gradle
+++ b/grails-test-examples/redis/build.gradle
@@ -46,6 +46,8 @@ dependencies {
     testAndDevelopmentOnly platform(project(':grails-bom'))
     testAndDevelopmentOnly 'org.webjars.npm:jquery'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'cloud.wondrify:asset-pipeline-grails'
     runtimeOnly 'com.h2database:h2'
     runtimeOnly 'org.apache.tomcat:tomcat-jdbc'
@@ -59,6 +61,8 @@ dependencies {
     testImplementation 'org.apache.grails.testing:grails-testing-support-redis'
     testImplementation 'org.spockframework:spock-core'
 
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     // This project also has unit tests in it, so we must define the launcher per
     // https://docs.gradle.org/8.3/userguide/upgrading_version_8.html#test_framework_implementation_dependencies
     testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
diff --git a/grails-test-examples/spring-security/acl/functional-test-app/build.gradle b/grails-test-examples/spring-security/acl/functional-test-app/build.gradle
index 1b283f0036..25bde004ca 100644
--- a/grails-test-examples/spring-security/acl/functional-test-app/build.gradle
+++ b/grails-test-examples/spring-security/acl/functional-test-app/build.gradle
@@ -37,6 +37,8 @@ dependencies {
     implementation 'org.apache.grails:grails-layout'
     implementation 'org.apache.grails:grails-data-hibernate5'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'com.h2database:h2'
     runtimeOnly 'com.zaxxer:HikariCP'
     runtimeOnly 'org.apache.grails:grails-databinding'
diff --git a/grails-test-examples/spring-security/acl/integration-test-app/build.gradle b/grails-test-examples/spring-security/acl/integration-test-app/build.gradle
index 3495667443..4133ef3804 100644
--- a/grails-test-examples/spring-security/acl/integration-test-app/build.gradle
+++ b/grails-test-examples/spring-security/acl/integration-test-app/build.gradle
@@ -36,6 +36,8 @@ dependencies {
     implementation 'org.apache.grails:grails-gsp'
     implementation 'org.apache.grails:grails-layout'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'com.h2database:h2'
     runtimeOnly 'com.zaxxer:HikariCP'
     runtimeOnly 'org.apache.grails:grails-databinding'
diff --git a/grails-test-examples/spring-security/cas/test1/build.gradle b/grails-test-examples/spring-security/cas/test1/build.gradle
index 6d8c31fb69..df91651532 100644
--- a/grails-test-examples/spring-security/cas/test1/build.gradle
+++ b/grails-test-examples/spring-security/cas/test1/build.gradle
@@ -41,6 +41,8 @@ dependencies {
     implementation 'org.webjars:bootstrap:3.3.6'
     implementation 'org.webjars:jquery:2.2.0'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'cloud.wondrify:asset-pipeline-grails'
     runtimeOnly 'com.h2database:h2'
     runtimeOnly 'com.zaxxer:HikariCP'
diff --git a/grails-test-examples/spring-security/core/functional-test-app/build.gradle b/grails-test-examples/spring-security/core/functional-test-app/build.gradle
index 16cbdb4353..3920973986 100644
--- a/grails-test-examples/spring-security/core/functional-test-app/build.gradle
+++ b/grails-test-examples/spring-security/core/functional-test-app/build.gradle
@@ -36,6 +36,8 @@ dependencies {
     implementation 'org.apache.grails:grails-layout'
     implementation 'org.apache.grails:grails-rest-transforms'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'cloud.wondrify:asset-pipeline-grails'
     runtimeOnly 'com.h2database:h2'
     runtimeOnly 'com.zaxxer:HikariCP'
diff --git a/grails-test-examples/spring-security/core/integration-test-app/build.gradle b/grails-test-examples/spring-security/core/integration-test-app/build.gradle
index 065108f59b..8891d8ced3 100644
--- a/grails-test-examples/spring-security/core/integration-test-app/build.gradle
+++ b/grails-test-examples/spring-security/core/integration-test-app/build.gradle
@@ -34,6 +34,8 @@ dependencies {
     implementation 'org.apache.grails.data:grails-datamapping-core'
     implementation 'org.apache.grails:grails-domain-class'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'com.h2database:h2'
     runtimeOnly 'com.zaxxer:HikariCP'
     runtimeOnly 'org.apache.grails:grails-data-hibernate5'
diff --git a/grails-test-examples/spring-security/core/misc-functional-test-app/group/build.gradle b/grails-test-examples/spring-security/core/misc-functional-test-app/group/build.gradle
index 4450d9923c..9869d845d1 100644
--- a/grails-test-examples/spring-security/core/misc-functional-test-app/group/build.gradle
+++ b/grails-test-examples/spring-security/core/misc-functional-test-app/group/build.gradle
@@ -47,6 +47,8 @@ dependencies {
         // @Autowired
     }
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'com.h2database:h2'
     runtimeOnly 'com.zaxxer:HikariCP'
     runtimeOnly 'org.apache.grails:grails-url-mappings'
diff --git a/grails-test-examples/spring-security/core/misc-functional-test-app/roles/build.gradle b/grails-test-examples/spring-security/core/misc-functional-test-app/roles/build.gradle
index 50834469ec..89a16f2891 100644
--- a/grails-test-examples/spring-security/core/misc-functional-test-app/roles/build.gradle
+++ b/grails-test-examples/spring-security/core/misc-functional-test-app/roles/build.gradle
@@ -47,6 +47,8 @@ dependencies {
     }
     implementation 'org.apache.grails:grails-layout'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'com.h2database:h2'
     runtimeOnly 'com.zaxxer:HikariCP'
     runtimeOnly 'org.apache.grails:grails-data-hibernate5'
diff --git a/grails-test-examples/spring-security/ldap/custom-user-details-context-mapper/build.gradle b/grails-test-examples/spring-security/ldap/custom-user-details-context-mapper/build.gradle
index 4e04b0b9ca..206b15ef58 100644
--- a/grails-test-examples/spring-security/ldap/custom-user-details-context-mapper/build.gradle
+++ b/grails-test-examples/spring-security/ldap/custom-user-details-context-mapper/build.gradle
@@ -44,6 +44,8 @@ dependencies {
     // to not depend on an external ldap server
     implementation 'com.unboundid:unboundid-ldapsdk'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'cloud.wondrify:asset-pipeline-grails'
     runtimeOnly 'com.h2database:h2'
     runtimeOnly 'com.zaxxer:HikariCP'
diff --git a/grails-test-examples/spring-security/ldap/functional-test-app/build.gradle b/grails-test-examples/spring-security/ldap/functional-test-app/build.gradle
index fe85fc7fa3..33f414fe8c 100644
--- a/grails-test-examples/spring-security/ldap/functional-test-app/build.gradle
+++ b/grails-test-examples/spring-security/ldap/functional-test-app/build.gradle
@@ -43,6 +43,8 @@ dependencies {
     implementation 'org.webjars:bootstrap:4.1.3'
     implementation 'org.webjars:jquery:3.3.1'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'cloud.wondrify:asset-pipeline-grails'
     runtimeOnly 'com.h2database:h2'
     runtimeOnly 'com.zaxxer:HikariCP'
diff --git a/grails-test-examples/spring-security/ldap/retrieve-db-roles/build.gradle b/grails-test-examples/spring-security/ldap/retrieve-db-roles/build.gradle
index 1bb404ec73..2890fefeb1 100644
--- a/grails-test-examples/spring-security/ldap/retrieve-db-roles/build.gradle
+++ b/grails-test-examples/spring-security/ldap/retrieve-db-roles/build.gradle
@@ -44,6 +44,8 @@ dependencies {
     // in-memory ldap server for testing
     implementation 'com.unboundid:unboundid-ldapsdk'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'cloud.wondrify:asset-pipeline-grails'
     runtimeOnly 'com.h2database:h2'
     runtimeOnly 'com.zaxxer:HikariCP'
diff --git a/grails-test-examples/spring-security/ldap/retrieve-group-roles/build.gradle b/grails-test-examples/spring-security/ldap/retrieve-group-roles/build.gradle
index c21d59b671..795da0b9fd 100644
--- a/grails-test-examples/spring-security/ldap/retrieve-group-roles/build.gradle
+++ b/grails-test-examples/spring-security/ldap/retrieve-group-roles/build.gradle
@@ -44,6 +44,8 @@ dependencies {
     // to not depend on an external ldap server
     implementation 'com.unboundid:unboundid-ldapsdk'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     runtimeOnly 'cloud.wondrify:asset-pipeline-grails'
     runtimeOnly 'com.h2database:h2'
     runtimeOnly 'com.zaxxer:HikariCP'
diff --git a/grails-test-examples/spring-security/ui/common/build.gradle b/grails-test-examples/spring-security/ui/common/build.gradle
index 8f9a68e4ff..8f2032c363 100644
--- a/grails-test-examples/spring-security/ui/common/build.gradle
+++ b/grails-test-examples/spring-security/ui/common/build.gradle
@@ -24,9 +24,12 @@ plugins {
 
 dependencies {
     implementation platform(project(':grails-bom'))
+
     testFixturesImplementation platform(project(':grails-bom'))
     testFixturesImplementation testFixtures('org.apache.grails:grails-spring-security')
     testFixturesImplementation testFixtures('org.apache.grails:grails-geb')
+
+    testFixturesCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 }
 
 apply {
diff --git a/grails-test-examples/spring-security/ui/extended/build.gradle b/grails-test-examples/spring-security/ui/extended/build.gradle
index fb492c7382..2dc48b50c0 100644
--- a/grails-test-examples/spring-security/ui/extended/build.gradle
+++ b/grails-test-examples/spring-security/ui/extended/build.gradle
@@ -42,7 +42,7 @@ dependencies {
 
     implementation 'org.apache.grails:grails-mail'
 
-    compileOnly 'org.slf4j:slf4j-nop' // Remove warning about missing slf4j implementation during gsp compilation
+    compileOnly 'org.slf4j:slf4j-nop' // Remove warning about missing slf4j implementation during compilation
 
     runtimeOnly 'cloud.wondrify:asset-pipeline-grails'
     runtimeOnly 'com.h2database:h2'
@@ -56,6 +56,8 @@ dependencies {
     testImplementation 'org.apache.grails:grails-testing-support-datamapping'
     testImplementation 'org.spockframework:spock-core'
 
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     integrationTestImplementation testFixtures(project(':grails-test-examples-spring-security-ui-common'))
     integrationTestImplementation testFixtures('org.apache.grails:grails-geb')
 }
diff --git a/grails-test-examples/undertow/build.gradle b/grails-test-examples/undertow/build.gradle
index 2685b55e43..c5ee8806fb 100644
--- a/grails-test-examples/undertow/build.gradle
+++ b/grails-test-examples/undertow/build.gradle
@@ -57,6 +57,8 @@ dependencies {
 
     runtimeOnly 'cloud.wondrify:asset-pipeline-grails'
 
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     integrationTestImplementation testFixtures('org.apache.grails:grails-geb')
 }
 
diff --git a/grails-test-suite-base/build.gradle b/grails-test-suite-base/build.gradle
index b35c526057..3aaa66dc2b 100644
--- a/grails-test-suite-base/build.gradle
+++ b/grails-test-suite-base/build.gradle
@@ -47,6 +47,7 @@ dependencies {
     api 'org.apache.groovy:groovy'
 
     compileOnly 'jakarta.servlet:jakarta.servlet-api'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'org.springframework:spring-test', {
         // MockHttpServletRequest/Response/Context used in many classes
     }
diff --git a/grails-test-suite-web/build.gradle b/grails-test-suite-web/build.gradle
index 9dcce53649..140465335c 100644
--- a/grails-test-suite-web/build.gradle
+++ b/grails-test-suite-web/build.gradle
@@ -48,6 +48,8 @@ dependencies {
         exclude group: 'org.apache.grails', module: 'grails-rest-transforms'
     }
     testImplementation 'org.spockframework:spock-core'
+
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 }
 
 def defaultTestConfig = {
diff --git a/grails-testing-support-core/build.gradle b/grails-testing-support-core/build.gradle
index f0ab23baf8..f0afc675d5 100644
--- a/grails-testing-support-core/build.gradle
+++ b/grails-testing-support-core/build.gradle
@@ -59,6 +59,8 @@ dependencies {
     api 'org.junit.platform:junit-platform-suite'
     runtimeOnly 'org.junit.jupiter:junit-jupiter-engine'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testImplementation 'org.apache.groovy:groovy-test-junit5'
     testImplementation 'org.junit.jupiter:junit-jupiter-api'
     testImplementation 'org.junit.platform:junit-platform-suite'
diff --git a/grails-testing-support-datamapping/build.gradle b/grails-testing-support-datamapping/build.gradle
index 368d9ef7c9..e1ddcf54e3 100755
--- a/grails-testing-support-datamapping/build.gradle
+++ b/grails-testing-support-datamapping/build.gradle
@@ -139,6 +139,7 @@ dependencies {
     compileOnly 'org.apache.groovy:groovy', {
         // comp: CompileStatic, CompileDynamic, TypeCheckingMode
     }
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 }
 
 apply {
diff --git a/grails-testing-support-http-client/build.gradle b/grails-testing-support-http-client/build.gradle
index 19408caab4..e4dc84751d 100644
--- a/grails-testing-support-http-client/build.gradle
+++ b/grails-testing-support-http-client/build.gradle
@@ -50,11 +50,12 @@ dependencies {
     implementation "org.opentest4j:opentest4j:$openTest4jVersion" // AssertionFailedError
     implementation 'org.springframework:spring-beans' // @Value
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testImplementation "io.github.cjstehno.ersatz:ersatz:$ersatzVersion"
     testImplementation "io.github.cjstehno.ersatz:ersatz-groovy:$ersatzVersion"
+    testImplementation 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation and tests
     testImplementation 'org.spockframework:spock-core'
-
-    testRuntimeOnly 'org.slf4j:slf4j-nop' // Remove annoying warning
 }
 
 apply {
diff --git a/grails-testing-support-views-gson/build.gradle b/grails-testing-support-views-gson/build.gradle
index 9a6661072e..eacdd0266f 100644
--- a/grails-testing-support-views-gson/build.gradle
+++ b/grails-testing-support-views-gson/build.gradle
@@ -53,6 +53,8 @@ dependencies {
     implementation 'org.apache.groovy:groovy-json'
     implementation 'org.apache.groovy:groovy-templates'
     implementation 'org.springframework:spring-webmvc'
+
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 }
 
 apply {
diff --git a/grails-testing-support-web/build.gradle b/grails-testing-support-web/build.gradle
index 71b2e2f789..5e845a802c 100755
--- a/grails-testing-support-web/build.gradle
+++ b/grails-testing-support-web/build.gradle
@@ -53,6 +53,8 @@ dependencies {
     implementation project(':grails-web-jsp'), {
         // impl: TagLibraryResolverImpl
     }
+
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 }
 
 apply {
diff --git a/grails-undertow/plugin/build.gradle b/grails-undertow/plugin/build.gradle
index bdfce68050..434c746888 100644
--- a/grails-undertow/plugin/build.gradle
+++ b/grails-undertow/plugin/build.gradle
@@ -42,6 +42,7 @@ dependencies {
     api 'org.apache.groovy:groovy'
 
     compileOnly project(':grails-core')
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 
     runtimeOnly 'io.undertow.ee:undertow-websockets'
 
@@ -53,6 +54,8 @@ dependencies {
     testImplementation 'org.spockframework:spock-core'
     testImplementation 'jakarta.servlet:jakarta.servlet-api'
 
+    testCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testRuntimeOnly 'org.slf4j:slf4j-nop'
 }
 
diff --git a/grails-url-mappings/build.gradle b/grails-url-mappings/build.gradle
index afdfc09f2f..6fe078eddd 100644
--- a/grails-url-mappings/build.gradle
+++ b/grails-url-mappings/build.gradle
@@ -47,6 +47,7 @@ dependencies {
     testCompileOnly 'org.junit.jupiter:junit-jupiter-api'
 
     compileOnly 'jakarta.servlet:jakarta.servlet-api'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'org.springframework:spring-test', {
         // MockHttpServletRequest/Response/Context used in many classes
     }
diff --git a/grails-validation/build.gradle b/grails-validation/build.gradle
index 16649c963c..1bf03f925b 100644
--- a/grails-validation/build.gradle
+++ b/grails-validation/build.gradle
@@ -43,6 +43,7 @@ dependencies {
     api 'org.apache.groovy:groovy'
 
     compileOnly 'jakarta.servlet:jakarta.servlet-api'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'org.springframework:spring-test', {
         // MockHttpServletRequest/Response/Context used in many classes
     }
diff --git a/grails-views-core/build.gradle b/grails-views-core/build.gradle
index be92edb53a..7367eaf1d4 100644
--- a/grails-views-core/build.gradle
+++ b/grails-views-core/build.gradle
@@ -56,8 +56,10 @@ dependencies {
     implementation 'org.slf4j:slf4j-api'
     implementation 'org.springframework:spring-beans'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
+    testImplementation 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation and tests
     testImplementation 'org.spockframework:spock-core'
-    testRuntimeOnly 'org.slf4j:slf4j-nop' // Get rid of warnings about missing slf4j implementation during test task
 }
 
 apply {
diff --git a/grails-views-gson/build.gradle b/grails-views-gson/build.gradle
index ddd33fb9e6..fa83481697 100644
--- a/grails-views-gson/build.gradle
+++ b/grails-views-gson/build.gradle
@@ -50,16 +50,18 @@ dependencies {
     implementation 'org.apache.groovy:groovy-json'
     implementation 'jakarta.validation:jakarta.validation-api'
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testImplementation project(':grails-testing-support-views-gson')
     testImplementation project(':grails-testing-support-core')
     testImplementation project(':grails-testing-support-datamapping')
     testImplementation project(':grails-data-hibernate5-core')
+    testImplementation 'jakarta.servlet:jakarta.servlet-api'
+    testImplementation 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation and tests
     testImplementation 'org.spockframework:spock-core'
     testImplementation 'tools.jackson.core:jackson-databind'
-    testImplementation 'jakarta.servlet:jakarta.servlet-api'
 
     testRuntimeOnly 'org.objenesis:objenesis' // Required by Spock for mocking classes without default constructor
-    testRuntimeOnly 'org.slf4j:slf4j-nop' // Get rid of warning about missing slf4j implementation during test task
 }
 
 def testArtifacts = ['*.gson', 'circular/**']
diff --git a/grails-views-markup/build.gradle b/grails-views-markup/build.gradle
index 4f520c3d95..b197473481 100644
--- a/grails-views-markup/build.gradle
+++ b/grails-views-markup/build.gradle
@@ -49,11 +49,12 @@ dependencies {
     implementation 'org.springframework.boot:spring-boot' // For @ConfigurationProperties
 
     compileOnly 'jakarta.annotation:jakarta.annotation-api' // Provided
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 
     testImplementation project(':grails-web-url-mappings')
     testImplementation 'org.spockframework:spock-core'
     testImplementation 'jakarta.servlet:jakarta.servlet-api'
-    testRuntimeOnly 'org.slf4j:slf4j-nop' // Get rid of warning about missing slf4j implementation during test task
+    testImplementation 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation and tests
 }
 
 apply {
diff --git a/grails-web-boot/build.gradle b/grails-web-boot/build.gradle
index 022d773fbf..2f7c401b07 100644
--- a/grails-web-boot/build.gradle
+++ b/grails-web-boot/build.gradle
@@ -48,6 +48,7 @@ dependencies {
     testRuntimeOnly project(':grails-url-mappings')
 
     compileOnly 'jakarta.servlet:jakarta.servlet-api'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'org.springframework:spring-test', {
         // MockHttpServletRequest/Response/Context used in many classes
     }
diff --git a/grails-web-common/build.gradle b/grails-web-common/build.gradle
index 7b7c814f79..33aad6cd07 100644
--- a/grails-web-common/build.gradle
+++ b/grails-web-common/build.gradle
@@ -62,6 +62,8 @@ dependencies {
         // MockHttpServletRequest/Response/Context used in many classes
     }
 
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
+
     testImplementation 'jakarta.servlet:jakarta.servlet-api'
     testImplementation 'org.springframework:spring-test'
 
diff --git a/grails-web-core/build.gradle b/grails-web-core/build.gradle
index cc3619fbf9..55acbce608 100644
--- a/grails-web-core/build.gradle
+++ b/grails-web-core/build.gradle
@@ -52,6 +52,7 @@ dependencies {
     }
 
     compileOnly 'jakarta.servlet:jakarta.servlet-api'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'org.springframework:spring-test', {
         // MockHttpServletRequest/Response/Context used in many classes
     }
diff --git a/grails-web-databinding/build.gradle b/grails-web-databinding/build.gradle
index 76e4730869..672e2f7d28 100644
--- a/grails-web-databinding/build.gradle
+++ b/grails-web-databinding/build.gradle
@@ -56,6 +56,7 @@ dependencies {
     }
 
     compileOnly 'jakarta.servlet:jakarta.servlet-api'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'org.springframework:spring-test', {
         // MockHttpServletRequest/Response/Context used in many classes
     }
diff --git a/grails-web-mvc/build.gradle b/grails-web-mvc/build.gradle
index 29f94b12cc..6ff0620417 100644
--- a/grails-web-mvc/build.gradle
+++ b/grails-web-mvc/build.gradle
@@ -44,6 +44,7 @@ dependencies {
     api 'org.apache.groovy:groovy'
 
     compileOnly 'jakarta.servlet:jakarta.servlet-api'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'org.springframework:spring-test', {
         // MockHttpServletRequest/Response/Context used in many classes
     }
diff --git a/grails-web-url-mappings/build.gradle b/grails-web-url-mappings/build.gradle
index 84cfc6679d..6b1de96a36 100644
--- a/grails-web-url-mappings/build.gradle
+++ b/grails-web-url-mappings/build.gradle
@@ -57,6 +57,7 @@ dependencies {
     // jline comes with it: the renderer reads GrailsConsole, whose signature Groovy has to resolve.
     cliImplementation 'org.jline:jline'
     cliCompileOnly 'jakarta.servlet:jakarta.servlet-api'
+    cliCompileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
 
     api project(':grails-web-common')
     implementation 'io.micrometer:micrometer-observation'
@@ -75,6 +76,7 @@ dependencies {
     testImplementation project(':grails-test-suite-base')
 
     compileOnly 'jakarta.servlet:jakarta.servlet-api'
+    compileOnly 'org.slf4j:slf4j-nop' // Prevents warning about missing slf4j implementation during compilation
     compileOnly 'org.springframework:spring-test', {
         // MockHttpServletRequest/Response/Context used in many classes
     }