Apache Grails (Incubating) 7.0.0-M4 - Release Announcement
June 10, 2025
The Apache Grails (incubating) community is excited for the release of Grails Framework 7.0.0-M4.
We encourage you to try this pre-release and provide your feedback here.
Download Source Code and Binary Distributions
Users Mailing List
The users mailing list will be a General purpose list for questions and discussion about Grails.
Web Archive: https://lists.apache.org/list.html?users@grails.apache.org
Subscribe: Send a blank email to users-subscribe@grails.apache.org
Dev Mailing List
The dev mailing list is focused on the framework implementation and its evolution.
Web Archive: https://lists.apache.org/list.html?dev@grails.apache.org
Subscribe: Send a blank email to dev-subscribe@grails.apache.org
When participating in mailing lists, you should never include any personally identifiable information (PII) like your address, phone number or email address, as all messages sent to these lists are publicly accessible and archived, meaning anyone can view your information. Make sure your email client does not add your signature with these items.
What's Changed
For changes made in Grails 7 prior to 7.0.0-M4, check out the Grails 7.0.0-M1 Release Blog Post and Grails 7.0.0-M3 Release Blog Post
Apache Grails (incubating) 7.0.0-M4 is the first release for Grails under the Apache Software Foundation (ASF). This release focuses first on meeting the requirements of the ASF & improving the developer experience of Grails itself & Grails Applications. As part of this transition, the developers moved to a mono repository, reworked the way the various Grails CLIs work, modernized its build system, modernized the various Grails Gradle Tasks, modernized the various Grails Gradle Plugins, worked towards reproducible builds, added license headers to our source code, and changed the maven coordinates of all Grails Artifacts.
With the release of Grails 7.0.0-M4, we have:
- PR #14750 - support non-persistent super classes for @Autotimestamp
- Issue #14745 - remove deprecated doc method on Grails Plugins
- Issue #14745 - remove duplicate grails.factories & grails-plugin.xml files now that AST generation is working correctly
- Issue #14745 - switch to Spring Boot 3.5.0 with Spring Framework 6.2.7 due to bug (https://github.com/spring-projects/spring-framework/issues/34796)
- Issue #14745 - change the grails-gradle-model to export Groovy 3 due to Gradle Task isolation in later versions of Gradle
- Issue #14745 - rework the FindMainTask to correctly set the main Application class on BootWar, BootJar, & BootRun
- Issue #14745 - remove org.grails.plugins.CodecGrailsPlugin; use org.grails.plugins.codecs.CodecsGrailsPlugin instead
- Issue #14745 - remove the remaining pathingJar task functions
- Issue #14745 - fix a databinding scenario in DataBindingUtils to lookup a domain object
- PR #14749 - retire Mongo 5.0 & 6.0 test pipelines since those versions are end of support
- PR #14746 - switch to asset-pipeline-gradle 5.0.9
- PR #14743 - remove redundant buildScript from test projects
- Issue #14706 - rework grailsw to be usable independently of SDKMAN installs
- Issue #14706 - rework grails-shell-cli to be usable independently of SDKMAN installs
- Issue #14706 - rework the command cli to support a grailsw that can self-update either forge or legacy shell cli
- Issue #14706 - distribute a delegating CLI that can call either forge or the legacy shell cli
- Issue #14706 - rework the legacy shell cli to correctly find profiles
- Issue #14706 - rework both grailsw & grails-shell-cli to be testable outside of releases
- Issue #14679 - generate reproducible groovydoc jars
- Issue #14679 - fix profile compilation to generate reproducible jars
- Issue #14679 - ensure groovydoc is used instead of javadoc for documentation jars
- PR #14709 - switch to Gradle 8.14
- PR #14678 - add support for external config locations, by incorporating the external-config plugin into Grails core
- Refactor grails into a mono repo (grails-views, gsp, data mapping, geb, etc are all merged into core now)
- As part of the mono repo transition, several Deprecated classes were removed from the views project; see the upgrade guide for the details.
- Issue #14679 - refactor grails build to be parallel & lazy
- Issue #14679 - change all Grails gradle tasks to support Caching where appropriate and support lazy style configuration
- Issue #14679 - Redesign the Grails Data TCK to support modern versions of Java
- Issue #14679 - Support consistent property dates in generated property files when SOURCE_DATE_EPOCH is set
- Issue #14679 - Make grails.factories generation reproducible
- Issue #14679 - Refactor Grails AST Transformations to take advantage of Groovy's TransformWithPriority and enforce transforms always run in the order defined by the class
GroovyTransformOrder
- Issue #14679 - Remove manifest attributes that could vary on the Grails jars (Built-By, Created-By etc)
- Issue #14679 - Fix sourcejar creation to not contain duplicates
- Issue #14679 - Fix javadoc jars to be generated based on groovydoc & to not contain duplicates
- Issue #14679 - Change AST transforms to be reproducible by adopting determined ordering collections
- Issue #14679 - Configure Grails jars per Gradle's reproducibility requirements (fixed permissions, reproducible file order, etc)
- Issue #13850 - introduce
grails-common
to share common code between Grails Data Mapping & Grails-Core - Issue #14679 - add scripts to confirm reproducibility of Grails; currently 14 of 290 jars are reproducible
- Issue #14679 - make TagLib lookups reproducible
- PR #14671 - switch to webjars for test css/js assets instead of checked in files
- The Grails Gradle plugin had a bug that caused plugin resolution issues that was fixed after the last milestone.
- Rework the grails bom to generate valid Gradle modules, be easier to maintain, and valid pom files. Enhance the documentation process to parse the bom & generate the published versions in the grails doc.
And in addition to all of this:
- We changed all coordinates of Grails to be org.apache.grails based. See https://github.com/apache/grails-core/blob/7.0.x/RENAME.md for how we mapped these libraries. There is also a script documented in the upgrade guide to assist in upgrading.
- Consolidated main Grails projects into grails-core git monorepository to drastically speed up development, testing and the release process
- Significant test fixes
- Significant documentation updates & changes
- Addition of license headers to Grails Source
- Addition of NOTICE to Grails Source
- Created https://repo.grails.org/grails/restricted/ to replace https://repo.grails.org/grails/core longer term. This virtual repo's scope is significantly reduced to help reduce the chance of using outdated libraries.
Upgrade instructions are available in the documentation.
Dependency Upgrades
In this release, we've upgraded several dependency versions, including but not limited to the following:
- Asset Pipeline 5.0.9
- Groovy 4.0.27
- Spring Framework 6.2.7
- Spring Boot 3.5.0
- Gradle 8.14
- Spock 2.3-groovy-4.0
- See all in the grails-bom.
Installing Grails 7.0.0-M4
Try out Grails 7.0.0-M4 today by visiting the online app creator * Grails Forge. Alternatively, you can quickly install Grails 7.0.0-M4 using the SDKMan.
-
If you don't have SDKMan installed, follow the instructions at SDKMan Installation Guide to set it up.
-
Once SDKMan is installed, open your terminal and run the following command to install Grails 7.0.0-M4:
sdk install grails 7.0.0-M4
-
You're all set! To verify the installation, run:
grails --version
Upgrading Your Existing Applications to Grails 7.0.0-M4
If you already have a Grails application and want to upgrade to the latest version, follow these steps:
-
Open the project in your favorite IDE (preferably JetBrains' IntelliJ IDEA).
-
Update your application's
gradle.properties
file to specify Grails 7.0.0-M4 as the desired version.grailsVersion=7.0.0-M4 # The Grails Gradle Plugin version is now available in the BOM # and can be omitted if your project adds the Grails BOM to the # buildscript dependencies. grailsGradlePluginVersion=7.0.0-M4 # Temporary for 7.0.0-M4 to force the latest version groovy.version=4.0.27
-
Make any necessary adjustments to your application code, configuration, and dependencies to ensure compatibility with the new version. See https://docs.grails.org/7.0.0-M4/guide/single.html#upgrading60x.
Normally, Grails Core dependencies are automatically updated using the Grails Bill of Materials (BOM). However, if you have specific versions defined in your build configuration, you may need to manually update them to align with Grails 7.0.0-M4.
By following these steps, you should be able to transition your existing Grails application to Grails 7.0.0-M4.
Exploring Alternative Approaches
If manual dependency updates seem daunting, or you want a more streamlined approach, consider the following alternatives:
1. Use Grails Forge Website
Visit Grails Forge and generate a new Grails application with Grails 7.0.0-M4. Compare the versions in the newly generated application with your existing one to identify any discrepancies. This can serve as a reference point for your update.
2. Automated Dependency Update Bots
Configure automated dependency update bots like Renovate or Dependabot with your source control platform (e.g., GitHub). These bots can automatically detect and update outdated dependencies in your project, including Grails dependencies, saving you time and effort in manual updates.
With these steps and alternative approaches, you should be well on your way to enjoying the exciting features and improvements in Grails 7.0.0-M4. Happy coding!
Why should you try out Grails 7.0.0-M4?
- Help us test this major upgrade of the Grails Framework and provide feedback.
- Be ready for when Grails 7 is released.
Grails 7 Release Schedule
- We will continue to work on updating and fixing issues over the next few weeks.
- Based on feedback, an Apache Grails RC release is targeted for July 2025.
Thank you!
A huge thank you to our amazing community for supporting the Grails Framework over the past 19 years! We’re excited for the future and grateful for the opportunity to continue innovating and pushing Grails forward together.
Contributors
We would like to extend our heartfelt thanks to all the contributors who made Grails 7.0.0-M4 possible.
Special thanks to:
- James Daugherty
- James Fredley
- Mattias Reichel
- Scott Murphy
- Søren Berg Glasius
- David Estes
- Aaron Mondelblatt
- Arjang Chinichian
- Jonas Pammer
- Brian Koehmstedt
- Gianluca Sartori
- Paul King
Their dedication and hard work have significantly contributed to the release of Grails 7.0.0-M4.
Join the Grails Slack Community, share your feedback, and contribute to making Grails Framework even better in the future. Happy coding!