This is an automated email from the ASF dual-hosted git repository. jamesfredley pushed a commit to branch fix/8.0.x-merge-sb4-fallout in repository https://gitbox.apache.org/repos/asf/grails-core.git
commit b4dd6cfe5e536c5798b39a0c8eaee3ba31c090ee Author: James Fredley <[email protected]> AuthorDate: Thu May 21 19:31:43 2026 -0400 Fix Spring Boot 4 autoconfigure package paths in exclude strings The merge from 7.2.x reintroduced three Spring Boot 3 era package names that are referenced as string literals (so the compiler cannot catch them). On the Grails 8 / Spring Boot 4 stack those classes live in new modules and the strings silently fail to match anything, so the @EnableAutoConfiguration exclusions they describe never take effect. * ApplicationClassInjector#CONDITIONAL_EXCLUSIONS pointed org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration at the wrong package; the class moved to org.springframework.boot.liquibase.autoconfigure in SB4. * GrailsApplicationCompilerAutoConfiguration injected an exclude for org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration into auto generated Application classes; that class moved to org.springframework.boot.jdbc.autoconfigure in SB4. The matching ApplicationClassInjectorSpec assertion is updated so the unit test catches future regressions of the liquibase entry. Assisted-by: claude-code:claude-opus-4-7 --- .../org/grails/compiler/injection/ApplicationClassInjector.groovy | 2 +- .../org/grails/compiler/injection/ApplicationClassInjectorSpec.groovy | 2 +- .../org/grails/cli/boot/GrailsApplicationCompilerAutoConfiguration.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/grails-core/src/main/groovy/org/grails/compiler/injection/ApplicationClassInjector.groovy b/grails-core/src/main/groovy/org/grails/compiler/injection/ApplicationClassInjector.groovy index 2d126792dd..763bdbe761 100644 --- a/grails-core/src/main/groovy/org/grails/compiler/injection/ApplicationClassInjector.groovy +++ b/grails-core/src/main/groovy/org/grails/compiler/injection/ApplicationClassInjector.groovy @@ -83,7 +83,7 @@ class ApplicationClassInjector implements GrailsArtefactClassInjector { static final List<Map<String, String>> CONDITIONAL_EXCLUSIONS = [ [ pluginClass: 'org.grails.plugins.databasemigration.DatabaseMigrationGrailsPlugin', - excludeClass: 'org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration', + excludeClass: 'org.springframework.boot.liquibase.autoconfigure.LiquibaseAutoConfiguration', systemProperty: 'grails.autoconfigure.exclude.liquibase' ] ] diff --git a/grails-core/src/test/groovy/org/grails/compiler/injection/ApplicationClassInjectorSpec.groovy b/grails-core/src/test/groovy/org/grails/compiler/injection/ApplicationClassInjectorSpec.groovy index 680e1cfd6e..df02a2d506 100644 --- a/grails-core/src/test/groovy/org/grails/compiler/injection/ApplicationClassInjectorSpec.groovy +++ b/grails-core/src/test/groovy/org/grails/compiler/injection/ApplicationClassInjectorSpec.groovy @@ -53,7 +53,7 @@ class ApplicationClassInjectorSpec extends Specification { where: expected << [ [ - excludeClass: 'org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration', + excludeClass: 'org.springframework.boot.liquibase.autoconfigure.LiquibaseAutoConfiguration', pluginClass: 'org.grails.plugins.databasemigration.DatabaseMigrationGrailsPlugin', systemProperty: 'grails.autoconfigure.exclude.liquibase' ] diff --git a/grails-shell-cli/src/main/groovy/org/grails/cli/boot/GrailsApplicationCompilerAutoConfiguration.java b/grails-shell-cli/src/main/groovy/org/grails/cli/boot/GrailsApplicationCompilerAutoConfiguration.java index fbc9286f4e..9e8c912b22 100644 --- a/grails-shell-cli/src/main/groovy/org/grails/cli/boot/GrailsApplicationCompilerAutoConfiguration.java +++ b/grails-shell-cli/src/main/groovy/org/grails/cli/boot/GrailsApplicationCompilerAutoConfiguration.java @@ -127,7 +127,7 @@ public class GrailsApplicationCompilerAutoConfiguration extends CompilerAutoConf ClassNode applicationClassNode = new ClassNode("Application", Modifier.PUBLIC, ClassHelper.make("grails.boot.config.GrailsAutoConfiguration")); AnnotationNode enableAutoAnnotation = new AnnotationNode(ENABLE_AUTO_CONFIGURATION_CLASS_NODE); try { - enableAutoAnnotation.addMember("exclude", new ClassExpression(ClassHelper.make("org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration"))); + enableAutoAnnotation.addMember("exclude", new ClassExpression(ClassHelper.make("org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration"))); } catch (Throwable e) { // ignore }
