Skip to content

Commit 94bcc5c

Browse files
authored
Merge pull request #377 from apache/7.0.0-M5-blog-post
Initial draft for 7.0.0-M5 Blog Post
2 parents 8a04c9a + 97aa5fc commit 94bcc5c

File tree

3 files changed

+267
-1
lines changed

3 files changed

+267
-1
lines changed

buildSrc/src/main/groovy/org/grails/gradle/RenderSiteTask.groovy

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.grails.gradle
22

33
import edu.umd.cs.findbugs.annotations.Nullable
4+
import groovy.transform.CompileDynamic
45
import groovy.transform.CompileStatic
56
import org.grails.ContentAndMetadata
67
import org.grails.Page
@@ -20,6 +21,7 @@ import org.gradle.api.tasks.InputDirectory
2021
import org.gradle.api.tasks.OutputDirectory
2122
import org.gradle.api.tasks.TaskAction
2223
import static groovy.io.FileType.FILES
24+
import groovy.time.TimeCategory
2325

2426
import javax.annotation.Nonnull
2527
import javax.validation.constraints.NotNull
@@ -277,10 +279,22 @@ class RenderSiteTask extends DefaultTask {
277279
BlogTask.MMMM_D_YYYY.format(BlogTask.parseDate(date))
278280
}
279281

282+
@CompileDynamic
283+
static String formatDateMinus6Months(String date) {
284+
use(TimeCategory) {
285+
BlogTask.MMMM_D_YYYY.format(BlogTask.parseDate(date) - 6.months)
286+
}
287+
}
288+
289+
static String URLEncode(String date) {
290+
URLEncoder.encode(date, "UTF-8")
291+
}
292+
280293
static String replaceLineWithMetadata(String line, Map<String, String> metadata) {
281294
Map<String, String> m = new HashMap<>(metadata)
282295
if (m.containsKey('date')) {
283296
m['date'] = formatDate(m['date'])
297+
m['6MonthsBackForGitHub'] = '?from=' + URLEncode(formatDateMinus6Months(m['date'])) + '&to=' + URLEncode(formatDate(m['date']))
284298
}
285299
for (String metadataKey : m.keySet()) {
286300
if (line.contains("[%${metadataKey}]".toString())) {

posts/2025-06-10-grails-7-m4.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Apache Grails (Incubating) 7.0.0-M4 - Release Announcement
33
date: June 10, 2025
4-
description: The Apache Grails (incubating) community is pleased to announce is excited to announce the Milestone 4 release of Grails Framework 7!
4+
description: The Apache Grails (incubating) community is excited to announce the Milestone 4 release of Grails Framework 7!
55
author: James Fredley
66
image: grails-blog-index-3.png
77
---

posts/2025-07-15-grails-7-m5.md

Lines changed: 252 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,252 @@
1+
---
2+
version: 7.0.0-M5
3+
priorVersion: 7.0.0-M4
4+
title: Apache Grails (Incubating) [%version] - Release Announcement
5+
date: June 15, 2025
6+
description: The Apache Grails (incubating) community is excited to announce the Milestone [%version] release of the Grails Framework!
7+
author: James Fredley
8+
image: grails-blog-index-3.png
9+
10+
---
11+
12+
# [%title]
13+
14+
[%author]
15+
16+
[%date]
17+
18+
[%description] \
19+
We encourage you to try this pre-release version and provide your feedback [here](https://github.com/apache/grails-core/issues).
20+
21+
## Download Source Code and Binary Distributions
22+
23+
[Apache Grails Downloads](/download.html)
24+
25+
## What's Changed
26+
For changes made in Grails 7 prior to [%version], check out the following blog posts:
27+
* [Grails 7.0.0-M1](/blog/2024-12-23-grails-7-m1.html)
28+
* [Grails 7.0.0-M3](/blog/2025-03-05-grails-7-m3.html)
29+
* [Grails 7.0.0-M4](/blog/2025-06-10-grails-7-m4.html)
30+
31+
### [%version] Changes:
32+
* Add permissions to release environments by @jdaugherty in #14795
33+
* Force update asf.yaml by @jdaugherty in #14796
34+
* explicitly add jdaugherty as approver by @jdaugherty in #14797
35+
* back to snapshot by @jdaugherty in #14800
36+
* Add add-license scripts for .raw, .java and .groovy by @jamesfredley in #14794
37+
* Fixes found as part of the second attempt at M2 by @jdaugherty in #14782
38+
* Verify build explanation and minor fix by @sbglasius in #14781
39+
* initial attempt at GitHub -> Mailing List notifications by @jamesfredley in #14784
40+
* Update Geb documentation changes in Breaking Changes Section by @jamesfredley in #14793
41+
* Update grails-forge - google cloud run deploy documentation by @jamesfredley in #14803
42+
* Unnest the snapshot zip uploaded to workflow results by @jamesfredley in #14808
43+
* Gradle deprecations by @jdaugherty in #14805
44+
* Update grails-static-website section on RELEASE.md by @jamesfredley in #14807
45+
* Support specifying the publication name so that gradle plugins can be published by @jdaugherty in #14812
46+
* Use developmentOnly Gradle configuration scope for webjars by @jamesfredley in #14811
47+
* Rework mainClass gradle find logic by @jdaugherty in #14816
48+
* fix: #14818 - ensure plugin is the base for web-plugin by @jdaugherty in #14819
49+
* Fixing Issue #14173 – Update grails Command Documentation for Grails 7 by @irllyliketoast in #14809
50+
* Update to new asset pipeline coordinates by @jdaugherty in #14813
51+
* fix: update grails-docs coords in GrailsDocGradlePlugin by @matrei in #14826
52+
* Support not adding components from the grails publish plugin by @jdaugherty in #14827
53+
* fix: scope webjars as testAndDevelopmentOnly by @jamesfredley in #14829
54+
* Update to Spring Boot 3.5.3 which uses Groovy 4.0.27 by @jamesfredley in #14824
55+
* database-migration mapped to grails-data-hibernate5-dbmigration by @jamesfredley in #14831
56+
* #14832 - support findMainTask caching with plugins & boot tasks in the task graph by @jdaugherty in #14833
57+
* Add Documentation: Tomcat 10.1.42 multipart/form-data part count and header size limit by @jamesfredley in #14838
58+
* chore(tests): move tests to the correct module by @matrei in #14839
59+
* Merge grails-forge into grails-core by @jdaugherty in #14836
60+
* Replace google analytics with Matomo, analytics.apache.org by @jamesfredley in #14842
61+
* Correct dependency to grails-codecs-core by @matrei in #14844
62+
* chore: update to 5.0.12 for the asset pipeline by @jdaugherty in #14879
63+
* Fix spelling by @jdaugherty in #14881
64+
* fix: #14854 - remove duplicate repo definition (restricted contains maven central) by @jdaugherty in #14882
65+
* chore: #14779 - add better instructions on how to build & use the source distribution by @jdaugherty in #14880
66+
* chore: #14877 - add DISCLAIMER, LICENSE, & NOTICE files to jar files by @jdaugherty in #14878
67+
* Various Cleanup prior to Sitemesh 2 revert by @jdaugherty in #14876
68+
* fix: #14090 - fix baseUrl returning the wrong result when forwardPort is null by @jdaugherty in #14884
69+
* Revert to Sitemesh 2 for Grails 7 by @jdaugherty in #14875
70+
* Issue #14748 - upgrade notes for gradle plugin / task changes by @jdaugherty in #14883
71+
* #14316 Use local repo commands instead of the github api for Release Drop Down population by @JudeRV in #14834
72+
73+
Full Changelog: [v[%priorVersion]...v[%version]](https://github.com/apache/grails-core/compare/v[%priorVersion]...v[%version])
74+
75+
Upgrade instructions are available in the [documentation](https://docs.grails.org/[%version]/guide/single.html#upgrading60x).
76+
77+
## Dependency Upgrades
78+
In this release, we've upgraded several dependency versions, including but not limited to the following:
79+
80+
* Asset Pipeline 5.0.12 (now cloud.wondrify.asset-pipeline)
81+
* Groovy 4.0.27
82+
* Spring Framework 6.2.8
83+
* Spring Boot 3.5.3
84+
* Gradle 8.14.2
85+
* See all in the [grails-bom](https://docs.grails.org/[%version]/ref/Versions/Grails%20BOM.html).
86+
87+
## Generating a new Grails [%version] application with Grails Forge
88+
Try out Grails today by visiting our online application generator [Grails Forge](https://start.grails.org/). This is the quickest and the recommended way to get started with Grails.
89+
90+
After installing the JetBrains' IntelliJ IDEA [Grails Plugin](https://plugins.jetbrains.com/plugin/18504-grails), the Grails Application Forge will also be available under New Project in IntelliJ IDEA.
91+
92+
Within your newly generated project you can access the Grails CLIs with the grails wrapper
93+
94+
See [Types of CLI](https://docs.grails.org/[%version]/guide/gettingStarted.html#downloadingAndInstalling) for details on each CLI
95+
96+
grail-shell-cli
97+
98+
```shell
99+
grailsw
100+
```
101+
102+
grails-forge-cli
103+
104+
```shell
105+
grailsw -t forge
106+
```
107+
108+
## Installing Grails CLIs [%version] with SDKMan
109+
Alternatively, you can quickly install Grails [%version] CLIs (grails-shell-cli and grails-forge-cli) using [SDKMan](https://sdkman.io/).
110+
111+
See [Types of CLI](https://docs.grails.org/[%version]/guide/gettingStarted.html#downloadingAndInstalling) for details on each CLI
112+
113+
1. If you don't have SDKMan installed, follow the instructions at [SDKMan Installation Guide](https://sdkman.io/install/)
114+
to set it up.
115+
2. Once SDKMan is installed, open your terminal and run the following command to install Grails [%version]:
116+
117+
```shell
118+
sdk install grails [%version]
119+
```
120+
121+
3. You're all set! To verify the installation, run:
122+
123+
```shell
124+
grails --version
125+
```
126+
127+
The Grails Shell CLI can be accessed as:
128+
129+
```shell
130+
grails
131+
```
132+
or
133+
```shell
134+
grails-shell-cli
135+
```
136+
The Grails Forge CLI can be accessed as:
137+
```shell
138+
grails -t forge
139+
```
140+
or
141+
```shell
142+
grails-forge-cli
143+
```
144+
145+
## Upgrading Your Existing Applications to Grails [%version]
146+
If you already have a Grails application and want to upgrade to the latest version, follow these steps:
147+
148+
1. Open the project in your favorite IDE (preferably JetBrains' IntelliJ IDEA).
149+
2. Update your application's `gradle.properties` file to specify Grails [%version] as the desired version.
150+
151+
```properties
152+
grailsVersion=[%version]
153+
```
154+
155+
3. Make any necessary adjustments to your application code, configuration, and dependencies to ensure compatibility with
156+
the new version. [See Upgrade Guide](https://docs.grails.org/[%version]/guide/single.html#upgrading60x)
157+
158+
Normally, Grails Core dependencies are automatically updated using the Grails Bill of Materials (BOM). However, if you
159+
have specific versions defined in your build configuration, you may need to manually update them to align with
160+
Grails [%version].
161+
162+
By following these steps, you should be able to transition your existing Grails application to Grails [%version].
163+
164+
### Exploring Alternative Approaches
165+
If manual dependency updates seem daunting, or you want a more streamlined approach, consider the following alternatives:
166+
167+
#### 1. Use Grails Forge Website
168+
Visit [Grails Forge](https://start.grails.org) and generate a new Grails application with Grails [%version]. Compare the
169+
versions in the newly generated application with your existing one to identify any discrepancies. This can serve as a
170+
reference point for your update.
171+
172+
#### 2. Automated Dependency Update Bots
173+
Configure automated dependency update bots like [Renovate](https://docs.renovatebot.com/) or
174+
[Dependabot](https://dependabot.com/) with your source control platform (e.g., GitHub). These bots can automatically
175+
detect and update outdated dependencies in your project, including Grails dependencies, saving you time and effort in
176+
manual updates.
177+
178+
With these steps and alternative approaches, you should be well on your way to enjoying the exciting features and
179+
improvements in Grails [%version].
180+
181+
## Why should you try out Grails [%version]?
182+
* Help us test this major upgrade of the Grails Framework and provide feedback.
183+
* Be ready for when Grails 7 is released.
184+
185+
## Grails 7 Release Schedule
186+
* We will continue to work on [updating and fixing issues](https://github.com/orgs/apache/projects/487) over the next few
187+
weeks.
188+
* Based on feedback, an Apache Grails RC release is targeted for July/August 2025.
189+
190+
## Apache Grails Mailing Lists
191+
### Users Mailing List
192+
The users mailing list will be a General purpose list for questions and discussion about Grails.\
193+
**Web Archive:** [https://lists.apache.org/[email protected]](https://lists.apache.org/[email protected]) \
194+
**Subscribe:** Send a blank email to [[email protected]](mailto:[email protected])
195+
196+
### Dev Mailing List
197+
The dev mailing list is focused on the framework implementation and its evolution. \
198+
**Web Archive:** [https://lists.apache.org/[email protected]](https://lists.apache.org/[email protected]) \
199+
**Subscribe:** Send a blank email to [[email protected]](mailto:[email protected])
200+
201+
When participating in mailing lists, you should never include any personally identifiable information (PII) like
202+
your address, phone number or email address, as all messages sent to these lists are publicly accessible and archived,
203+
meaning anyone can view your information. Make sure your email client does not add your signature with these items.
204+
205+
## Thank you!
206+
A huge thank you to our amazing community for supporting the Grails Framework over the past 19 years! We’re excited for
207+
the future and grateful for the opportunity to continue innovating and pushing Grails forward together.
208+
209+
## Contributors
210+
We would like to extend our heartfelt thanks to all the contributors who made Grails [%version] possible. \
211+
Special thanks to:
212+
213+
* [James Daugherty](https://github.com/jdaugherty)
214+
* [James Fredley](https://github.com/jamesfredley)
215+
* [Mattias Reichel](https://github.com/matrei)
216+
* [Scott Murphy](https://github.com/codeconsole)
217+
* [Brian Koehmstedt](https://github.com/bkoehm)
218+
* [Søren Berg Glasius](https://github.com/sbglasius)
219+
* [Paul King](https://github.com/paulk-asert)
220+
* [Jonas Pammer](https://github.com/JonasPammer)
221+
* [Gianluca Sartori](https://github.com/gsartori)
222+
* [David Estes](https://github.com/davydotcom)
223+
* [Michael Yan](https://github.com/rainboyan)
224+
* [Jude Vargas](https://github.com/JudeRV)
225+
* [Thomas Rasmussen](https://github.com/dauer)
226+
* [Laura Estremera](https://github.com/irllyliketoast)
227+
* [Andrew Herring](https://github.com/dreewh)
228+
* [Yasuharu Nakano](https://github.com/nobeans)
229+
* [Aaron Mondelblatt](https://github.com/amondel2)
230+
* [Arjang Chinichian](https://github.com/arjangch)
231+
* [Felix Scheinost](https://github.com/felixscheinost)
232+
* [gandharvas](https://github.com/gandharvas)
233+
* [zyro](https://github.com/zyro23)
234+
235+
Recent Contributors by Project:
236+
237+
* [grails-core](https://github.com/apache/grails-core/graphs/contributors[%6MonthsBackForGitHub])
238+
* [grails-spring-security](https://github.com/apache/grails-spring-security/graphs/contributors[%6MonthsBackForGitHub])
239+
* [grails-static-website](https://github.com/apache/grails-static-website/graphs/contributors[%6MonthsBackForGitHub])
240+
* [grails-forge-ui](https://github.com/apache/grails-forge-ui/graphs/contributors[%6MonthsBackForGitHub])
241+
* [grails-quartz](https://github.com/apache/grails-quartz/graphs/contributors[%6MonthsBackForGitHub])
242+
* [grails-gradle-publish](https://github.com/apache/incubator-grails-gradle-publish/graphs/contributors[%6MonthsBackForGitHub])
243+
* [grails-redis](https://github.com/apache/grails-redis/graphs/contributors[%6MonthsBackForGitHub])
244+
* [grails-github-actions](https://github.com/apache/grails-github-actions/graphs/contributors[%6MonthsBackForGitHub])
245+
246+
[Combined Commit List](https://github.com/search?q=repo%3Aapache%2Fgrails-core+repo%3Aapache%2Fgrails-spring-security+repo%3Aapache%2Fgrails-static-website+repo%3Aapache%2Fgrails-forge-ui+repo%3Aapache%2Fgrails-quartz+repo%3Aapache%2Fincubator-grails-gradle-publish+repo%3Agrails-redis+repo%3Agrails-github-actions+is%3Apublic&type=commits&s=committer-date&o=desc)
247+
248+
Their dedication and hard work have significantly contributed to the release of Grails [%version].
249+
250+
Join the [Grails Slack Community](https://grails.slack.com), share your feedback, and contribute to making Grails Framework even better in
251+
the future. Happy coding!
252+

0 commit comments

Comments
 (0)