Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
f1a881e
Quick Updates for Spring Boot 4
jamesfredley Jan 19, 2026
fb217b9
Merge remote-tracking branch 'origin/8.0.x' into spring-boot-4
jamesfredley Mar 20, 2026
530013a
fix: resolve Spring Boot 4 incompatibilities reintroduced by 8.0.x merge
jamesfredley Mar 20, 2026
5aad61d
Merge branch '8.0.x' into spring-boot-4
jamesfredley Mar 21, 2026
6e2d905
Merge branch '8.0.x' into spring-boot-4
jamesfredley Mar 21, 2026
fb98bbe
fix: Remove ThemeSource usage removed in Spring Framework 7.0
jamesfredley Mar 21, 2026
62f8864
fix: correct import ordering in ControllersAutoConfiguration
jamesfredley Mar 21, 2026
f703763
fix: Resolve compilation and test failures for Spring Boot 4 upgrade
jamesfredley Mar 21, 2026
29ce89a
fix: Replace wildcard import with explicit imports in LoggingTransformer
jamesfredley Mar 21, 2026
5c4bb1a
Merge branch '8.0.x' into spring-boot-4
jamesfredley Mar 21, 2026
8e2878a
fix: Resolve CI failures for Spring Boot 4 upgrade
jamesfredley Mar 21, 2026
042ef95
fix: restore reset() behavior in AbstractGrailsMockHttpServletResponse
matrei Mar 26, 2026
577bb41
test: Update assertions in RenderMethodTests
matrei Mar 26, 2026
0717300
test(cleanup): Cleanup RenderMethodTests
matrei Mar 26, 2026
919590f
fix(deps): update to spring-boot 4.0.5 and groovy 4.0.31
matrei Mar 30, 2026
710b3eb
build: minor cleanup
matrei Mar 30, 2026
bcc0972
fix: minor cleanup and removing of `@CompileDynamic`
matrei Mar 30, 2026
eff26da
Merge remote-tracking branch 'origin/8.0.x' into spring-boot-4
jamesfredley Mar 30, 2026
ad9a860
fix: update Spring Boot 4.0 bootstrap API imports to new package
jamesfredley Mar 30, 2026
b0903f7
fix: update autoconfigure exclusion paths for Spring Boot 4 package r…
jamesfredley Mar 30, 2026
6d96a7a
Merge branch '8.0.x' into spring-boot-4
jamesfredley Mar 31, 2026
0fd14cd
fix: address Copilot review feedback on Spring Boot 4 upgrade
jamesfredley Mar 31, 2026
f026c56
fix: address review feedback and architectural improvements for Sprin…
jamesfredley Apr 2, 2026
1314a2e
Fix servlet embedded tests & include the same dependencies as include…
jdaugherty Apr 4, 2026
307c57d
Merge pull request #15554 from apache/spring-boot-4-servletfixes
jamesfredley Apr 6, 2026
6991536
Merge remote-tracking branch 'origin/8.0.x' into spring-boot-4
jamesfredley Apr 7, 2026
d881a3c
Spring Boot 4 embedded server follow-ups: Tomcat, Undertow, JSP test
jamesfredley Apr 7, 2026
ee720c2
revert UrlMappingsAutoConfiguration changes
jdaugherty Apr 7, 2026
95f902f
Remove jackson.version override from BOM, let Spring Boot manage Jackson
jamesfredley Apr 7, 2026
8d23e8a
Fix Spring Boot 4 class relocations in tests, docs, and config
jamesfredley Apr 7, 2026
6a09010
Add NOTICE file to vendored spring-orm subproject
jamesfredley Apr 7, 2026
588d935
Add comprehensive Grails 8 upgrade guide for Spring Boot 4
jamesfredley Apr 7, 2026
ca0ac32
Fix JSP view rendering through Grails layout pipeline on Tomcat 11
jamesfredley Apr 7, 2026
8be9fb3
Update grails-micronaut to micronaut-platform 5.0.0-M1 with JDK 21 to…
jamesfredley Apr 7, 2026
6cba542
Fix Micronaut 5 JDK 21 build issues: groovydoc, SBOM, asset-pipeline
jamesfredley Apr 7, 2026
046b1a3
Fix table template rendering and update forge Undertow test for Sprin…
jamesfredley Apr 7, 2026
0832a3c
Fix javadoc & code style to match Grails
jdaugherty Apr 8, 2026
c51583f
Remove sitemesh3 since it does not support spring boot 4
jdaugherty Apr 8, 2026
4da5513
Remove grails-gsp-spring-boot from project until sitemesh3 is supported
jdaugherty Apr 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .agents/skills/grails-developer/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ Activate this skill when developing with Grails 7, including:
## Technology Stack

Grails 7 is built on:
- **Spring Boot**: 3.5.x
- **Spring Framework**: 6.2.x
- **Spring Boot**: 4.0.x
- **Spring Framework**: 7.0.x
- **Groovy**: 4.0.x
- **Gradle**: 8.14.x
- **Spock**: 2.3-groovy-4.0
Expand Down
158 changes: 83 additions & 75 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,8 @@ export GRADLE_OPTS="-Xms2G -Xmx5G"
|-----------|---------|
| JDK | 17+ (baseline 17) |
| Groovy | 4.0.x |
| Spring Boot | 3.5.x |
| Spring Framework | 6.2.x |
| Spring Boot | 4.0.x |
| Spring Framework | 7.0.x |
| Spock | 2.3-groovy-4.0 |
| Gradle | 8.14.x |
| Jakarta EE | 10 |
Expand Down
8 changes: 7 additions & 1 deletion NOTICE
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,10 @@ may be obtained from:
http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/index.html

This product includes software developed by the OpenSymphony Group (http://www.opensymphony.com/). It uses Sitemesh2,
licensed under the OpenSymphony Software License, Version 1.1. See licenses/LICENSE-opensymphony.txt for the full license terms.
licensed under the OpenSymphony Software License, Version 1.1. See licenses/LICENSE-opensymphony.txt for the full license terms.

Spring Framework ORM Hibernate 5 Support
This product includes software from the Spring Framework project (https://spring.io/projects/spring-framework),
vendored from Spring Framework 6.2.x. These classes were removed in Spring Framework 7.0.
Copyright 2002-2024 the original author or authors.
Licensed under the Apache License, Version 2.0.
2 changes: 1 addition & 1 deletion build-logic/docs-core/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ dependencies {

testImplementation "org.codehaus.groovy:groovy-test-junit5:${GroovySystem.version}"
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.12.2'
testImplementation 'org.junit.platform:junit-platform-runner:1.12.2'
testImplementation 'org.junit.platform:junit-platform-suite:1.12.2'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher:1.12.2'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.12.2'
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ class SbomPlugin implements Plugin<Project> {
'pkg:maven/org.jline/jline@3.23.0?type=jar' : 'BSD-2-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'pkg:maven/org.liquibase.ext/liquibase-hibernate5@4.27.0?type=jar': 'Apache-2.0', // maps incorrectly because of https://github.com/liquibase/liquibase/issues/2445 & the base pom does not define a license
'pkg:maven/com.oracle.coherence.ce/coherence-bom@25.03.1?type=pom': 'UPL-1.0', // does not have map based on license id
'pkg:maven/com.oracle.coherence.ce/coherence-bom@25.03.2?type=pom': 'UPL-1.0', // does not have map based on license id
'pkg:maven/com.oracle.coherence.ce/coherence-bom@22.06.2?type=pom': 'UPL-1.0', // does not have map based on license id
'pkg:maven/opensymphony/sitemesh@2.6.0?type=jar' : 'OpenSymphony', // custom license approved by legal LEGAL-707
'pkg:maven/org.jruby/jzlib@1.1.5?type=jar' : 'BSD-3-Clause'// https://web.archive.org/web/20240822213507/http://www.jcraft.com/jzlib/LICENSE.txt shows it's a 3 clause
Expand All @@ -114,6 +115,10 @@ class SbomPlugin implements Plugin<Project> {
'pkg:maven/org.hibernate.common/hibernate-commons-annotations@5.1.2.Final?type=jar': 'LGPL-2.1-only', // hibernate 5 is LGPL, we are migrating to ASF license in hibernate 7
'pkg:maven/org.hibernate/hibernate-core-jakarta@5.6.15.Final?type=jar' : 'LGPL-2.1-only', // hibernate 5 is LGPL, we are migrating to ASF license in hibernate 7
],
'grails-data-hibernate5-spring-orm' : [
'pkg:maven/org.hibernate.common/hibernate-commons-annotations@5.1.2.Final?type=jar': 'LGPL-2.1-only', // hibernate 5 is LGPL, we are migrating to ASF license in hibernate 7
'pkg:maven/org.hibernate/hibernate-core-jakarta@5.6.15.Final?type=jar' : 'LGPL-2.1-only', // hibernate 5 is LGPL, we are migrating to ASF license in hibernate 7
],
'grails-data-hibernate5-dbmigration': [
'pkg:maven/javax.xml.bind/jaxb-api@2.3.1?type=jar': 'CDDL-1.1', // api export
],
Expand Down
39 changes: 20 additions & 19 deletions dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ ext {
'jna.version' : '5.17.0',
'jquery.version' : '3.7.1',
'objenesis.version' : '3.4',
'spring-boot.version' : '3.5.13',
'spring-boot.version' : '4.0.5',
]

// Note: the name of the dependency must be the prefix of the property name so properties in the pom are resolved correctly
Expand All @@ -48,22 +48,23 @@ ext {

// Note: the name of the dependency must be the prefix of the property name so properties in the pom are resolved correctly
gradleBomDependencies = [
'ant' : "org.apache.ant:ant:${gradleBomDependencyVersions['ant.version']}",
'ant-junit' : "org.apache.ant:ant-junit:${gradleBomDependencyVersions['ant.version']}",
'asciidoctor-gradle-jvm': "org.asciidoctor:asciidoctor-gradle-jvm:${gradleBomDependencyVersions['asciidoctor-gradle-jvm.version']}",
'asciidoctorj' : "org.asciidoctor:asciidoctorj:${gradleBomDependencyVersions['asciidoctorj.version']}",
'asset-pipeline-gradle' : "cloud.wondrify:asset-pipeline-gradle:${gradleBomDependencyVersions['asset-pipeline-gradle.version']}",
'byte-buddy' : "net.bytebuddy:byte-buddy:${gradleBomDependencyVersions['byte-buddy.version']}",
'commons-text' : "org.apache.commons:commons-text:${gradleBomDependencyVersions['commons-text.version']}",
'directory-watcher' : "io.methvin:directory-watcher:${gradleBomDependencyVersions['directory-watcher.version']}",
'grails-publish-plugin' : "org.apache.grails.gradle:grails-publish:${gradleBomDependencyVersions['grails-publish-plugin.version']}",
'jansi' : "org.fusesource.jansi:jansi:${gradleBomDependencyVersions['jansi.version']}",
'javaparser-core' : "com.github.javaparser:javaparser-core:${gradleBomDependencyVersions['javaparser-core.version']}",
'jline' : "jline:jline:${gradleBomDependencyVersions['jline.version']}",
'jna' : "net.java.dev.jna:jna:${gradleBomDependencyVersions['jna.version']}",
'objenesis' : "org.objenesis:objenesis:${gradleBomDependencyVersions['objenesis.version']}",
'spring-boot-cli' : "org.springframework.boot:spring-boot-cli:${gradleBomDependencyVersions['spring-boot.version']}",
'spring-boot-gradle' : "org.springframework.boot:spring-boot-gradle-plugin:${gradleBomDependencyVersions['spring-boot.version']}",
'ant' : "org.apache.ant:ant:${gradleBomDependencyVersions['ant.version']}",
'ant-junit' : "org.apache.ant:ant-junit:${gradleBomDependencyVersions['ant.version']}",
'asciidoctor-gradle-jvm' : "org.asciidoctor:asciidoctor-gradle-jvm:${gradleBomDependencyVersions['asciidoctor-gradle-jvm.version']}",
'asciidoctorj' : "org.asciidoctor:asciidoctorj:${gradleBomDependencyVersions['asciidoctorj.version']}",
'asset-pipeline-gradle' : "cloud.wondrify:asset-pipeline-gradle:${gradleBomDependencyVersions['asset-pipeline-gradle.version']}",
'byte-buddy' : "net.bytebuddy:byte-buddy:${gradleBomDependencyVersions['byte-buddy.version']}",
'commons-text' : "org.apache.commons:commons-text:${gradleBomDependencyVersions['commons-text.version']}",
'directory-watcher' : "io.methvin:directory-watcher:${gradleBomDependencyVersions['directory-watcher.version']}",
'grails-publish-plugin' : "org.apache.grails.gradle:grails-publish:${gradleBomDependencyVersions['grails-publish-plugin.version']}",
'jansi' : "org.fusesource.jansi:jansi:${gradleBomDependencyVersions['jansi.version']}",
'javaparser-core' : "com.github.javaparser:javaparser-core:${gradleBomDependencyVersions['javaparser-core.version']}",
'jline' : "jline:jline:${gradleBomDependencyVersions['jline.version']}",
'jna' : "net.java.dev.jna:jna:${gradleBomDependencyVersions['jna.version']}",
'objenesis' : "org.objenesis:objenesis:${gradleBomDependencyVersions['objenesis.version']}",
'spring-boot-cli' : "org.springframework.boot:spring-boot-cli:${gradleBomDependencyVersions['spring-boot.version']}",
'spring-boot-gradle' : "org.springframework.boot:spring-boot-gradle-plugin:${gradleBomDependencyVersions['spring-boot.version']}",
'spring-boot-loader-tools': "org.springframework.boot:spring-boot-loader-tools:${gradleBomDependencyVersions['spring-boot.version']}",
]

bomDependencyVersions = [
Expand All @@ -74,7 +75,7 @@ ext {
'commons-lang3.version' : '3.20.0',
'geb-spock.version' : '8.0.1',
'groovy.version' : '4.0.31',
'jackson.version' : '2.19.1',

'jquery.version' : '3.7.1',
'liquibase-hibernate5.version': '4.27.0',
'mongodb.version' : '5.5.1',
Expand All @@ -91,7 +92,7 @@ ext {
bomPlatformDependencies = [
'asset-pipeline-bom': "cloud.wondrify:asset-pipeline-bom:${bomDependencyVersions['asset-pipeline-bom.version']}",
'spock-bom' : "org.spockframework:spock-bom:${bomDependencyVersions['spock.version']}",
'jackson-bom' : "com.fasterxml.jackson:jackson-bom:${bomDependencyVersions['jackson.version']}",

'groovy-bom' : "org.apache.groovy:groovy-bom:${bomDependencyVersions['groovy.version']}",
'selenium-bom' : "org.seleniumhq.selenium:selenium-bom:${bomDependencyVersions['selenium.version']}",
]
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ gradleChecksumPluginVersion=1.4.0
gradleCycloneDxPluginVersion=2.4.1

# micronaut libraries not in the bom due to the potential for spring mismatches
micronautPlatformVersion=4.9.2
micronautPlatformVersion=5.0.0-M1

# Libraries only specific to test apps, these should not be exposed
ersatzVersion=4.0.1
Expand Down
Loading
Loading