Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
6b8c1ad
build: Groovy 5.0.0-SNAPSHOT and Spock 2.4-M6-groovy-4.0
matrei May 15, 2025
88baa17
build: add `-Dspock.iKnowWhatImDoing.disableGroovyVersionCheck=true`
matrei May 15, 2025
f3edd09
fix: Groovy 5 compatibility
matrei May 15, 2025
d6b30be
test: Add `@PendingFeatureIf` for currently incompatible tests
matrei May 15, 2025
00fcb6c
Merge remote-tracking branch 'upstream/7.0.x' into groovy-5
jdaugherty Sep 8, 2025
cb7d7ff
feature: allow pulling staged versions of groovy for testing
jdaugherty Sep 8, 2025
cd9ff39
fix: switch to groovy.transform.Generated
jdaugherty Sep 8, 2025
457d6cd
chore: testing push access to grails-core
matrei Sep 9, 2025
c879a1c
Revert "chore: testing push access to grails-core"
matrei Sep 9, 2025
ace4d30
Merge branch '7.0.x' into groovy-5
matrei Oct 28, 2025
bd260ef
test(deps): update to Spock 2.4-groovy-5.0-SNAPSHOT
matrei Oct 29, 2025
30b1611
fix(deps): update to Groovy 5.0.2
matrei Oct 29, 2025
329f31e
test: remove `@PendingFeature` for passing tests
matrei Oct 29, 2025
94a02b8
style: fix imports
matrei Oct 29, 2025
41b8e09
Merge branch '7.0.x' into groovy-5
matrei Oct 29, 2025
bcbdff4
build: fix snapshot repositories
matrei Oct 29, 2025
efa1502
build: fix sbom issues
matrei Oct 29, 2025
72bdc31
Merge branch '7.0.x' into groovy-5
matrei Jan 13, 2026
554b802
fix: migrate to new groovysh api
matrei Jan 15, 2026
9427f51
chore: bump Groovy to 5.0.3-SNAPSHOT
matrei Jan 15, 2026
c54de20
fix: more Groovy 5 compatibility changes
matrei Jan 15, 2026
bb53f13
chore: bump Groovy to 5.0.4-SNAPSHOT
matrei Jan 15, 2026
f1a881e
Quick Updates for Spring Boot 4
jamesfredley Jan 19, 2026
f5d023f
Merge branch '8.0.x' into groovy-5
jamesfredley Feb 4, 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
765ff5d
fix(deps): Bump Groovy to 5.0.5
matrei Apr 1, 2026
f64e026
test: Remove `@PendingFeature` from passing test
matrei Apr 1, 2026
d1b8b5f
fix(deps): Bump Grails Spring Security to 7.0.1
matrei Apr 1, 2026
393bbfd
Merge remote-tracking branch 'apache/8.0.x' into groovy-5
matrei Apr 1, 2026
f026c56
fix: address review feedback and architectural improvements for Sprin…
jamesfredley Apr 2, 2026
4fe600e
Merge origin/groovy-5 into grails8-groovy5-sb4 (resolve: Groovy 5.0.5…
jamesfredley Apr 4, 2026
4a27159
cherry-pick 9574fe8: Groovy 5 compatibility fixes (66 files)
jamesfredley Apr 4, 2026
92b89ce
chore: remove unrelated files from previous branch
jamesfredley Apr 4, 2026
5fc3bda
fix: improve Groovy 5 compatibility - replace dynamic workarounds wit…
jamesfredley Apr 4, 2026
bfe1492
fix: pin Groovy to 5.0.3 and resolve downstream test failures
jamesfredley Apr 5, 2026
a427c33
Merge remote-tracking branch 'origin/8.0.x' into grails8-groovy5-sb4
jamesfredley Apr 5, 2026
28dd32f
fix(build): normalize line endings via .gitattributes
jamesfredley Apr 5, 2026
7896ef8
fix(grails-gradle): skip missing input dirs in mergeTestReports
jamesfredley Apr 5, 2026
013cb13
canary: test Groovy 6.0.0-SNAPSHOT
jamesfredley Apr 5, 2026
4463494
fix: Groovy 6 VerifyError in DefaultConstraintFactory default parameter
jamesfredley Apr 5, 2026
708e03c
fix: bump Groovy to 5.0.5 with GROOVY-11907 workaround
jamesfredley Apr 6, 2026
60c04d6
fix: clean up Groovy 5.0.3 workarounds now on 5.0.5
jamesfredley Apr 6, 2026
ba0df88
Merge branch 'grails8-groovy5-sb4' into grails8-groovy6-canary
jamesfredley Apr 6, 2026
c19037d
fix: Groovy 6 compile fixes - Spock version check and CycloneDX license
jamesfredley Apr 6, 2026
e82ea6b
fix: resolve CI failures for CodeNarc and cyclonedxBom
jamesfredley Apr 6, 2026
ddd7325
Merge remote-tracking branch 'origin/grails8-groovy5-sb4' into grails…
jamesfredley Apr 6, 2026
0dcb652
fix: Groovy 6 genericGetMethod regression breaks property access on G…
jamesfredley Apr 6, 2026
a6d06f5
fix: GormEntity.get(String) throws MissingPropertyException when GORM…
jamesfredley Apr 6, 2026
99bf0be
fix: centralize Spock version check and add jline 4.0.7 CycloneDX ove…
jamesfredley Apr 6, 2026
83567f4
fix: resolve Groovy 5 CI failures for CodeNarc, controller params, an…
jamesfredley Apr 6, 2026
8e4fba5
Merge remote-tracking branch 'origin/grails8-groovy5-sb4' into grails…
jamesfredley Apr 6, 2026
10a450c
fix: resolve Groovy 5 deep compatibility issues for MongoDB, Hibernat…
jamesfredley Apr 6, 2026
cfd7605
fix: Groovy 6 remaining test fixes
jamesfredley Apr 6, 2026
a6e9881
fix: work around Groovy 5 @CompileStatic instanceof bytecode bug
jamesfredley Apr 6, 2026
09a482f
chore: remove stale file
jamesfredley Apr 6, 2026
b2bd213
fix: resolve all remaining test failures on Groovy 6
jamesfredley Apr 6, 2026
a191fec
fix: resolve remaining Hibernate5 config-binding and trait test failures
jamesfredley Apr 6, 2026
24eb53d
Merge remote-tracking branch 'origin/grails8-groovy5-sb4' into grails…
jamesfredley Apr 6, 2026
153e14c
fix: cherry-pick Groovy 5 fixes from Groovy 6 canary branch
jamesfredley Apr 6, 2026
027c203
fix: CodeNarc UnnecessaryDotClass in DefaultConstraintFactory
jamesfredley Apr 6, 2026
b225663
Merge remote-tracking branch 'origin/grails8-groovy5-sb4' into grails…
jamesfredley Apr 6, 2026
e9ddaf3
fix: resolve functional test failures for cache, async, geb, views, a…
jamesfredley Apr 6, 2026
b9ac44c
Merge remote-tracking branch 'origin/grails8-groovy5-sb4' into grails…
jamesfredley Apr 6, 2026
52aad53
fix: GormEntity.get(String) delegates to staticPropertyMissing for GO…
jamesfredley Apr 6, 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
20 changes: 20 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Force LF line endings on checkout for all text files so that tools
# like Spotless (which normalize to LF) do not report format violations
# on systems where git is configured with core.autocrlf=true.
* text=auto eol=lf

# Files that must always have CRLF line endings on checkout
*.bat text eol=crlf
*.cmd text eol=crlf

# Binary files (no line ending normalization)
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.ico binary
*.jar binary
*.zip binary
*.gz binary
*.tgz binary
*.pdf binary
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
486 changes: 243 additions & 243 deletions LICENSE

Large diffs are not rendered by default.

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 @@ -33,6 +33,7 @@ import org.gradle.api.tasks.bundling.Jar
import org.gradle.api.tasks.compile.GroovyCompile
import org.gradle.api.tasks.compile.JavaCompile
import org.gradle.api.tasks.javadoc.Javadoc
import org.gradle.api.tasks.testing.Test
import org.gradle.external.javadoc.StandardJavadocDocletOptions

import static org.apache.grails.buildsrc.GradleUtils.lookupPropertyByType
Expand Down Expand Up @@ -110,10 +111,14 @@ class CompilePlugin implements Plugin<Project> {
it.options.encoding = StandardCharsets.UTF_8.name()
it.options.fork = true
it.options.forkOptions.jvmArgs = ['-Xms128M', '-Xmx2G']
it.options.forkOptions.jvmArgs += ['-Dspock.iKnowWhatImDoing.disableGroovyVersionCheck=true']
if (System.getenv('SUPPRESS_DEPRECATION_WARNINGS') == 'true') {
it.options.compilerArgs += ['-Xlint:-removal']
}
}
project.tasks.withType(Test).configureEach {
it.jvmArgs('-Dspock.iKnowWhatImDoing.disableGroovyVersionCheck=true')
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,14 +88,34 @@ class SbomPlugin implements Plugin<Project> {
]

private static Map<String, String> LICENSE_MAPPING = [
'pkg:maven/org.antlr/antlr4-runtime@4.7.2?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'pkg:maven/jline/jline@2.14.6?type=jar' : 'BSD-2-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'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@22.06.2?type=pom': 'UPL-1.0', // does not have map based on license id
'pkg:maven/jline/jline@2.14.6?type=jar' : 'BSD-2-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'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
'pkg:maven/org.antlr/antlr4-runtime@4.7.2?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'pkg:maven/org.jline/jansi@3.30.9?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'pkg:maven/org.jline/jansi@4.0.7?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'pkg:maven/org.jline/jline@3.23.0?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'pkg:maven/org.jline/jline-builtins@3.30.9?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'pkg:maven/org.jline/jline-builtins@4.0.7?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'pkg:maven/org.jline/jline-console@3.30.9?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'pkg:maven/org.jline/jline-console@4.0.7?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'pkg:maven/org.jline/jline-console-ui@4.0.7?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'pkg:maven/org.jline/jline-native@3.30.9?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'pkg:maven/org.jline/jline-native@4.0.7?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'pkg:maven/org.jline/jline-reader@3.30.9?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'pkg:maven/org.jline/jline-reader@4.0.7?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'pkg:maven/org.jline/jline-shell@4.0.7?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'pkg:maven/org.jline/jline-style@3.30.9?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'pkg:maven/org.jline/jline-style@4.0.7?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'pkg:maven/org.jline/jline-terminal@3.30.9?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'pkg:maven/org.jline/jline-terminal@4.0.7?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'pkg:maven/org.jline/jline-terminal-jansi@3.30.9?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'pkg:maven/org.jline/jline-terminal-jna@3.30.9?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'pkg:maven/org.jline/jline-terminal-jni@3.30.9?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'pkg:maven/org.jline/jline-terminal-jni@4.0.7?type=jar' : 'BSD-3-Clause', // maps incorrectly because of https://github.com/CycloneDX/cyclonedx-core-java/issues/205
'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
'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
]

// we don't distribute these so these licenses are considered acceptable, but we still prefer ASF licenses.
Expand All @@ -114,6 +134,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
41 changes: 21 additions & 20 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 @@ -73,16 +74,16 @@ ext {
'commons-codec.version' : '1.18.0',
'commons-lang3.version' : '3.20.0',
'geb-spock.version' : '8.0.1',
'groovy.version' : '4.0.31',
'jackson.version' : '2.19.1',
'groovy.version' : '6.0.0-SNAPSHOT',
'jackson.version' : '2.21.2',
'jquery.version' : '3.7.1',
'liquibase-hibernate5.version': '4.27.0',
'mongodb.version' : '5.5.1',
'rxjava.version' : '1.3.8',
'rxjava2.version' : '2.2.21',
'rxjava3.version' : '3.1.11',
'selenium.version' : '4.38.0',
'spock.version' : '2.3-groovy-4.0',
'spock.version' : '2.4-groovy-5.0',
'sitemesh.version' : '2.6.0',
'starter-sitemesh.version' : '3.2.2',
]
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ micronautPlatformVersion=4.9.2

# Libraries only specific to test apps, these should not be exposed
ersatzVersion=4.0.1
grailsSpringSecurityVersion=7.0.2-SNAPSHOT
grailsSpringSecurityVersion=7.0.1
jbossTransactionApiVersion=2.0.0.Final
# Note: we do not import the micronaut bom in our tests to avoid spring version mismatches
micronautHttpClientVersion=4.9.9
Expand Down
32 changes: 32 additions & 0 deletions gradle/boot4-disabled-integration-test-config.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

// TODO: BOOT4 - Integration tests disabled due to Spring Boot 4 incompatibilities.
//
// Modules applying this file have their integrationTest task disabled because of
// external plugin/library incompatibilities with Spring Boot 4 / Spring Framework 7.
//
// Known blockers:
// - grails-spring-security: ReflectionUtils.getApplication() removed in Spring Boot 4
// - SiteMesh3: Decorator/layout not compatible with Spring Framework 7
//
// Re-enable each module's integrationTest when its blocking dependency is updated.
// Search for 'boot4-disabled-integration-test-config' to find all affected modules.

tasks.named('integrationTest') {
enabled = false
}
7 changes: 7 additions & 0 deletions gradle/functional-test-config.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,18 @@ configurations.configureEach {
}
}

tasks.withType(GroovyCompile).configureEach {
options.forkOptions.jvmArgs += ['-Dspock.iKnowWhatImDoing.disableGroovyVersionCheck=true']
}

List<String> debugArguments = [
'-Xmx2g', '-Xdebug', '-Xnoagent', '-Djava.compiler=NONE',
'-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005'
]
tasks.withType(Test).configureEach { Test task ->

systemProperty('spock.iKnowWhatImDoing.disableGroovyVersionCheck', 'true')

boolean isHibernate5 = !project.name.startsWith('grails-test-examples-hibernate5')
boolean isMongo = !project.name.startsWith('grails-test-examples-mongodb')

Expand Down
8 changes: 8 additions & 0 deletions gradle/hibernate5-test-config.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,14 @@
dependencies {
// https://docs.gradle.org/8.3/userguide/upgrading_version_8.html#test_framework_implementation_dependencies
add('testRuntimeOnly', 'org.junit.platform:junit-platform-launcher')
// Required by Spock 2.4 to mock concrete classes (byte-buddy/objenesis are
// not transitive from spock-core in this configuration).
add('testRuntimeOnly', 'net.bytebuddy:byte-buddy')
add('testRuntimeOnly', 'org.objenesis:objenesis')
}

tasks.withType(GroovyCompile).configureEach {
options.forkOptions.jvmArgs += ['-Dspock.iKnowWhatImDoing.disableGroovyVersionCheck=true']
}

tasks.withType(Test).configureEach {
Expand Down
Loading
Loading