This is an automated email from the ASF dual-hosted git repository.
asf-ci-deploy pushed a commit to branch asf-site-production
in repository https://gitbox.apache.org/repos/asf/grails-website.git
The following commit(s) were added to refs/heads/asf-site-production by this
push:
new 4e7129b4ffc Updating apache/grails-website asf-site-production branch
for Github Actions run:18392662170
4e7129b4ffc is described below
commit 4e7129b4ffc9699e2d48213f453eda07a568ca69
Author: jamesfredley <[email protected]>
AuthorDate: Fri Oct 10 00:30:43 2025 +0000
Updating apache/grails-website asf-site-production branch for Github
Actions run:18392662170
---
blog/2016-04-01-1.html | 8 +-
blog/2016-04-01-2.html | 8 +-
blog/2016-05-28.html | 2 +-
blog/2016-07-22.html | 2 +-
blog/2016-08-31.html | 6 +-
blog/2016-09-28.html | 2 +-
blog/2017-01-20-1.html | 8 +-
blog/2017-01-20-2.html | 8 +-
blog/2017-01-20-3.html | 8 +-
blog/2017-01-20-4.html | 8 +-
blog/2017-06-28.html | 2 +-
blog/2017-07-12.html | 8 +-
blog/2017-07-26.html | 4 +-
blog/2017-10-30.html | 8 +-
blog/2017-11-21.html | 2 +-
blog/2018-02-08.html | 8 +-
blog/2018-05-24.html | 2 +-
blog/2019-01-30.html | 8 +-
blog/2019-02-19.html | 2 +-
blog/2019-07-11.html | 2 +-
blog/2022-07-18-rce-vulnerability.html | 2 +-
blog/2022-09-28-static-binding-bug.html | 2 +-
blog/2023-03-29-grails-6-m2.html | 4 +-
blog/2023-07-25-introducing-grails-6.html | 2 +-
blog/2024-12-23-grails-7-m1.html | 2 +-
blog/2025-03-05-grails-7-m3.html | 2 +-
blog/2025-06-10-grails-7-m4.html | 6 +-
blog/2025-07-15-grails-7-m5.html | 10 +-
blog/2025-08-10-grails-7-rc1.html | 10 +-
blog/2025-09-11-grails-7-rc2.html | 10 +-
...apache-grails-graduation-top-level-project.html | 2 +-
blog/index.html | 24 ++--
blog/tag/quickcast.html | 24 ++--
documentation.html | 36 +++---
faq.html | 2 +-
foundation/minutes.xml | 2 +-
index.html | 4 +-
profiles.html | 2 +-
rss.xml | 122 ++++++++++-----------
39 files changed, 187 insertions(+), 187 deletions(-)
diff --git a/blog/2016-04-01-1.html b/blog/2016-04-01-1.html
index 8445d55e359..b3198e22568 100644
--- a/blog/2016-04-01-1.html
+++ b/blog/2016-04-01-1.html
@@ -112,15 +112,15 @@
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
+ <h2>Quickcast #10: Debugging Grails® Apps</h2>
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #10: Debugging Grails® Apps</h2>
+ <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
</a>
</article></div>
</div>
diff --git a/blog/2016-04-01-2.html b/blog/2016-04-01-2.html
index f92ddd50b16..532f75330f9 100644
--- a/blog/2016-04-01-2.html
+++ b/blog/2016-04-01-2.html
@@ -115,15 +115,15 @@
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
+ <h2>Quickcast #10: Debugging Grails® Apps</h2>
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #10: Debugging Grails® Apps</h2>
+ <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
</a>
</article></div>
</div>
diff --git a/blog/2016-05-28.html b/blog/2016-05-28.html
index a9cde7cc179..b01a2257cde 100644
--- a/blog/2016-05-28.html
+++ b/blog/2016-05-28.html
@@ -231,7 +231,7 @@
<p>Now that we have our backend largely ready to go, we’re ready to set up
React.</p>
<blockquote>
<p>Question: Why Do This?</p>
-<p>Why not use separate backend and front-end apps? In a microservice
architecture, the work we’ve done might be sufficient - we could now build a
separate React/node-based front-end application independent of our Grails
backend. This is a great strategy, and <a
href="https://docs.grails.org/latest/guide/profiles.html#creatingProfiles">Grails
3.1 ships with a profile</a> tailored to this use case (web-api). Another
option is to take advantage of Gradle multi-project builds, with separate [...]
+<p>Why not use separate backend and front-end apps? In a microservice
architecture, the work we’ve done might be sufficient - we could now build a
separate React/node-based front-end application independent of our Grails
backend. This is a great strategy, and <a
href="https://grails.apache.org/docs/latest/guide/profiles.html#creatingProfiles">Grails
3.1 ships with a profile</a> tailored to this use case (web-api). Another
option is to take advantage of Gradle multi-project builds, with s [...]
<p>In this article, however, we’re considering the use of React as the “view”
(the V in MVC) in a standard Grails application. And although we’re sharing a
project directory, the React code and Grails artifacts are independent, and
will communicate at runtime via our restful API just as if they were separate
apps. The only thing tying these two apps together is the same Gradle build,
which gives us the benefits described earlier in the article (in fact, it would
be quite easy to split ou [...]
<p>There’s many situations where a team may want to bring React into a Grails
application, and it can be done in a way that allows for full developer
productivity for both Grails and Node/React developers. Read on to see how!</p>
</blockquote>
diff --git a/blog/2016-07-22.html b/blog/2016-07-22.html
index 66b2b6e89a4..1438c98ca0e 100644
--- a/blog/2016-07-22.html
+++ b/blog/2016-07-22.html
@@ -111,7 +111,7 @@
<p>Of course GORM 6.0 is usable in all versions of Grails 3.x.</p>
<p>On the Grails side, Grails 3.2 ships with release candidates of the new
AngularJS 1.0 scaffolding (Angular 2.0 support is coming) and JSON Views 1.1
plugins as well as numerous improvements to the profiles.</p>
<p>Grails 3.2 has also been updated to the latest and greatest dependencies
including Spring Boot 1.4 RC1 and Spring 4.3.</p>
-<p>Check out the <a
href="https://docs.grails.org/3.2.x/guide/introduction.html#whatsNew">What's
New in Grails 3.2 Guide</a> for information on all the updates.</p>
+<p>Check out the <a
href="https://grails.apache.org/docs/3.2.x/guide/introduction.html#whatsNew">What's
New in Grails 3.2 Guide</a> for information on all the updates.</p>
<p>We're inching closer to an RC now so it is a great time to try your
applications and <a href="https://github.com/apache/grails-core/issues">report
issues</a>!</p>
<p>If you want to hear more come and see us at Gr8Conf US in Minneapolis USA,
or G3 Summit in Fort Lauderdale USA!</p>
<h2 class='space-above'>
diff --git a/blog/2016-08-31.html b/blog/2016-08-31.html
index c916afae2a4..d158ab98486 100644
--- a/blog/2016-08-31.html
+++ b/blog/2016-08-31.html
@@ -109,7 +109,7 @@ dataSource.driverClassName = 'org.h2.Driver'
</code></pre>
<p>This article will not go into detail about YAML syntax. For that see <a
href="https://yaml.org/">the main YAML site</a>. Instead, this article will
focus on Grails 3 specific features related to accessing those configuration
values.</p>
<h2>The Config Property in GrailsApplication</h2>
-<p>The <a
href="https://docs.grails.org/3.1.10/api/grails/core/GrailsApplication.html">GrailsApplication</a>
interface defines the <a
href="https://docs.grails.org/3.1.10/api/grails/core/GrailsApplication.html#getConfig()">getConfig</a>
method which returns a <a
href="https://docs.grails.org/3.1.10/api/grails/config/Config.html">Config</a>
object. In the Spring application context is a bean named
<code>grailsApplication</code> which is an instance of a class which implements
the <code>Gr [...]
+<p>The <a
href="https://grails.apache.org/docs/3.1.10/api/grails/core/GrailsApplication.html">GrailsApplication</a>
interface defines the <a
href="https://grails.apache.org/docs/3.1.10/api/grails/core/GrailsApplication.html#getConfig()">getConfig</a>
method which returns a <a
href="https://grails.apache.org/docs/3.1.10/api/grails/config/Config.html">Config</a>
object. In the Spring application context is a bean named
<code>grailsApplication</code> which is an instance of a class which im [...]
<pre><code class="language-yaml"># grails-app/conf/application.yml
max:
line:
@@ -152,7 +152,7 @@ Integer maxLineNumbers =
config.getProperty('max.line.numbers', Integer)
Integer maxLineNumbers = config.getProperty('max.line.numbers', Integer, 2112)
</code></pre>
<h3>Required Properties</h3>
-<p>For required properties you could write application code that reacts
however is appropriate if the property doesn't exist. You could also use the <a
href="https://docs.grails.org/3.1.10/api/grails/config/ConfigMap.html#getRequiredProperty(java.lang.String,%20java.lang.Class)">getRequiredProperty</a>
method which will throw an exception if a requested property does not
exist.</p>
+<p>For required properties you could write application code that reacts
however is appropriate if the property doesn't exist. You could also use the <a
href="https://grails.apache.org/docs/3.1.10/api/grails/config/ConfigMap.html#getRequiredProperty(java.lang.String,%20java.lang.Class)">getRequiredProperty</a>
method which will throw an exception if a requested property does not
exist.</p>
<pre><code class="language-groovy">// retrieve the max.line.numbers config
value
// throws IllegalStateException if the
// config value does not exist
@@ -174,7 +174,7 @@ class SomeController {
}
</code></pre>
<h3>Config Injection Using GrailsConfigurationAware</h3>
-<p>An alternative is to retrieve the config value only once and then hold on
to it so that it may be used later as many times as necessary. One way to do
this is to have the config injected into any bean by implementing the <a
href="https://docs.grails.org/3.1.10/api/grails/core/support/GrailsConfigurationAware.html">GrailsConfigurationAware</a>
interface. There is a bean post processor that will discover all beans that
implement at that interface and that post processor will invoke the [...]
+<p>An alternative is to retrieve the config value only once and then hold on
to it so that it may be used later as many times as necessary. One way to do
this is to have the config injected into any bean by implementing the <a
href="https://grails.apache.org/docs/3.1.10/api/grails/core/support/GrailsConfigurationAware.html">GrailsConfigurationAware</a>
interface. There is a bean post processor that will discover all beans that
implement at that interface and that post processor will invo [...]
<pre><code class="language-groovy">import grails.config.Config
import grails.core.support.GrailsConfigurationAware
diff --git a/blog/2016-09-28.html b/blog/2016-09-28.html
index fbcd075f0a8..984842f651e 100644
--- a/blog/2016-09-28.html
+++ b/blog/2016-09-28.html
@@ -119,7 +119,7 @@
<li>REST improvements</li>
<li>Latest and greatest libraries (Spring Boot 1.4, Gradle 3.0, etc.)</li>
</ul>
-<p>These are just some of the highlights. I recommend checking out the
dedicated <a
href="https://docs.grails.org/3.2.x/guide/introduction.html#whatsNew">"What's
New"</a> section in the brand new Asciidoctor-based <a
href="https://docs.grails.org/3.2.x">user guide</a> for more information.</p>
+<p>These are just some of the highlights. I recommend checking out the
dedicated <a
href="https://grails.apache.org/docs/3.2.x/guide/introduction.html#whatsNew">"What's
New"</a> section in the brand new Asciidoctor-based <a
href="https://grails.apache.org/docs/3.2.x">user guide</a> for more
information.</p>
<p>Finally, thanks to all those who contributed feedback and issue reports to
the release. We look forward to the continued participation of the Grails
community as the framework continues to evolve.</p>
<h2 class='space-above'>
<span>You might also like ...</span>
diff --git a/blog/2017-01-20-1.html b/blog/2017-01-20-1.html
index da8a5aa881f..27b1006674f 100644
--- a/blog/2017-01-20-1.html
+++ b/blog/2017-01-20-1.html
@@ -111,15 +111,15 @@
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
+ <h2>Quickcast #10: Debugging Grails® Apps</h2>
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #10: Debugging Grails® Apps</h2>
+ <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
</a>
</article></div>
</div>
diff --git a/blog/2017-01-20-2.html b/blog/2017-01-20-2.html
index 12bc913224d..1e6548d8abc 100644
--- a/blog/2017-01-20-2.html
+++ b/blog/2017-01-20-2.html
@@ -111,15 +111,15 @@
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
+ <h2>Quickcast #10: Debugging Grails® Apps</h2>
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #10: Debugging Grails® Apps</h2>
+ <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
</a>
</article></div>
</div>
diff --git a/blog/2017-01-20-3.html b/blog/2017-01-20-3.html
index 21fbead5b1e..bd39d55a88c 100644
--- a/blog/2017-01-20-3.html
+++ b/blog/2017-01-20-3.html
@@ -112,15 +112,15 @@
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
+ <h2>Quickcast #10: Debugging Grails® Apps</h2>
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #10: Debugging Grails® Apps</h2>
+ <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
</a>
</article></div>
</div>
diff --git a/blog/2017-01-20-4.html b/blog/2017-01-20-4.html
index c4ab6992669..70613c7f4de 100644
--- a/blog/2017-01-20-4.html
+++ b/blog/2017-01-20-4.html
@@ -112,15 +112,15 @@
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
+ <h2>Quickcast #10: Debugging Grails® Apps</h2>
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #10: Debugging Grails® Apps</h2>
+ <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
</a>
</article></div>
</div>
diff --git a/blog/2017-06-28.html b/blog/2017-06-28.html
index 8929423137c..fcffefe67c7 100644
--- a/blog/2017-06-28.html
+++ b/blog/2017-06-28.html
@@ -93,7 +93,7 @@
<p><span class="author">By Zachary Klein</span></p>
<p><span class="date">June 28, 2017</span></p>
<p>Tags: <a href="https://grails.apache.org/blog/tag/ssl.html"><span
class="hashtag">#ssl</span></a> <a
href="https://grails.apache.org/blog/tag/deployment.html"><span
class="hashtag">#deployment</span></a></p>
-<p>The <a
href="https://docs.grails.org/latest/ref/Command%20Line/run-app.html">Grails<sup>®</sup>
<em>run-app</em> command documentation</a> describes how to use the
<em>-https</em> flag to serve your app over HTTPS.</p>
+<p>The <a
href="https://grails.apache.org/docs/latest/ref/Command%20Line/run-app.html">Grails<sup>®</sup>
<em>run-app</em> command documentation</a> describes how to use the
<em>-https</em> flag to serve your app over HTTPS.</p>
<blockquote>
<p>https - Start an HTTPS server (on port 8443 by default) alongside the main
server. Just to be clear, the application will be accessible via HTTPS and
HTTP. A self-signed key will be generated. Intended for development use
only.</p>
</blockquote>
diff --git a/blog/2017-07-12.html b/blog/2017-07-12.html
index 4d0039cca85..1f90a771f71 100644
--- a/blog/2017-07-12.html
+++ b/blog/2017-07-12.html
@@ -112,15 +112,15 @@
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
+ <h2>Quickcast #10: Debugging Grails® Apps</h2>
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #10: Debugging Grails® Apps</h2>
+ <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
</a>
</article></div>
</div>
diff --git a/blog/2017-07-26.html b/blog/2017-07-26.html
index 023cbc1305d..8ca09cb0314 100644
--- a/blog/2017-07-26.html
+++ b/blog/2017-07-26.html
@@ -93,12 +93,12 @@
<p><span class="author">By Graeme Rocher</span></p>
<p><span class="date">July 26, 2017</span></p>
<p>Tags: <a href="https://grails.apache.org/blog/tag/release.html"><span
class="hashtag">#release</span></a></p>
-<p>Just in time for <a href="https://gr8conf.us/">Gr8Conf US</a>, the <a
href="https://objectcomputing.com/products/2gm-team">Grails<sup>®</sup>
team</a> at <a href="https://objectcomputing.com/">Object Computing, Inc.</a>
(OCI) is pleased to announce the release of <a
href="https://docs.grails.org/3.3.x/">Grails 3.3 GA</a>.</p>
+<p>Just in time for <a href="https://gr8conf.us/">Gr8Conf US</a>, the <a
href="https://objectcomputing.com/products/2gm-team">Grails<sup>®</sup>
team</a> at <a href="https://objectcomputing.com/">Object Computing, Inc.</a>
(OCI) is pleased to announce the release of <a
href="https://grails.apache.org/docs/3.3.x/">Grails 3.3 GA</a>.</p>
<p>Grails 3.3 includes a number of significant improvements, most notably to
GORM with GORM 6.1, which we <a href="/blog/2017-03-27.html">released
earlier</a> in order to gather feedback from Grails 3.2.x users.</p>
<p>GORM 6.1 includes some real breakthrough innovations, including <a
href="https://gorm.grails.org/6.1.x/hibernate/manual/index.html#dataServices">Data
Services</a> that allow you to define interfaces that are automatically
implemented and work seamlessly with GORM's multi-tenancy features.</p>
<p>Other highlights of Grails 3.3 include the new <a
href="https://async.grails.org/latest/guide/index.html#events">EventBus</a>
abstraction which integrates with existing reactive libraries such as RxJava.
Events are also for the first time transaction aware so that consumers are only
notified if the surrounding transaction is successful, which simplifies code
greatly.</p>
<p>Overall there is an abundance of new features and improvements that
developers will be able to take advantage of, from the <a
href="https://testing.grails.org/">new testing framework</a> to improvemments
to <a href="https://views.grails.org/latest/">JSON Views</a>.</p>
-<p>All of these new features and more are covered in the <a
href="https://docs.grails.org/3.3.x/guide/introduction.html#whatsNew">What's
New guide</a>. Thanks to the Grails community who contributed greatly to making
the release a success and we look forward <a
href="https://github.com/apache/grails-core/issues">to your feedback</a>!</p>
+<p>All of these new features and more are covered in the <a
href="https://grails.apache.org/docs/3.3.x/guide/introduction.html#whatsNew">What's
New guide</a>. Thanks to the Grails community who contributed greatly to
making the release a success and we look forward <a
href="https://github.com/apache/grails-core/issues">to your feedback</a>!</p>
<h2 class='space-above'>
<span>You might also like ...</span>
</h2>
diff --git a/blog/2017-10-30.html b/blog/2017-10-30.html
index 327d4aa3ddb..4bfbec7f04e 100644
--- a/blog/2017-10-30.html
+++ b/blog/2017-10-30.html
@@ -112,15 +112,15 @@
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
+ <h2>Quickcast #10: Debugging Grails® Apps</h2>
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #10: Debugging Grails® Apps</h2>
+ <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
</a>
</article></div>
</div>
diff --git a/blog/2017-11-21.html b/blog/2017-11-21.html
index 01e9aef2d66..acfbd8ef441 100644
--- a/blog/2017-11-21.html
+++ b/blog/2017-11-21.html
@@ -93,7 +93,7 @@
<p><span class="author">By Zachary Klein</span></p>
<p><span class="date">November 21, 2017</span></p>
<p>Tags: <a href="https://grails.apache.org/blog/tag/react.html"><span
class="hashtag">#react</span></a></p>
-<p>As of Grails<sup>®</sup> 3.3.2, there are now two distinct <a
href="https://docs.grails.org/latest/guide/profiles.html">Profiles</a> for
using <a href="https://reactjs.org/">React</a> in your Grails projects. These
profiles are essentially the same as those described in the <a
href="/blog/2017-11-21.html">announcement post</a>, with some updates.</p>
+<p>As of Grails<sup>®</sup> 3.3.2, there are now two distinct <a
href="https://grails.apache.org/docs/latest/guide/profiles.html">Profiles</a>
for using <a href="https://reactjs.org/">React</a> in your Grails projects.
These profiles are essentially the same as those described in the <a
href="/blog/2017-11-21.html">announcement post</a>, with some updates.</p>
<h2>React-Webpack Profile for Grails apps</h2>
<p>This profile provides a monolithic project structure with React code
embedded within the Grails project. Formerly, to use this version of the
profile you had to specific it's version explictly. Now, this profile can be
used when creating a new Grails 3.3.2 app like so:</p>
<pre><code>grails create-app myapp -profile react-weback
diff --git a/blog/2018-02-08.html b/blog/2018-02-08.html
index 4061d836118..f9fa7020c17 100644
--- a/blog/2018-02-08.html
+++ b/blog/2018-02-08.html
@@ -111,15 +111,15 @@
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
+ <h2>Quickcast #10: Debugging Grails® Apps</h2>
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #10: Debugging Grails® Apps</h2>
+ <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
</a>
</article></div>
</div>
diff --git a/blog/2018-05-24.html b/blog/2018-05-24.html
index 5f4913784b1..e061bb1de90 100644
--- a/blog/2018-05-24.html
+++ b/blog/2018-05-24.html
@@ -92,7 +92,7 @@
<div class='light padded blogpost'><h1>Grails® Mock Logging</h1>
<p><span class="author">By Nirav Assar</span></p>
<p><span class="date">May 24, 2018</span></p>
-<p>In Grails<sup>®</sup> 3 applications, logging is handled by the <a
href="https://docs.grails.org/latest/guide/conf.html#logging">Logback logging
framework</a>. Grails artifacts are configured with logging out of the box. The
developer simply invokes <code>log.info("log whatever")</code> and it
works. But how do we create unit tests that assert that logs occur with the
appropriate level?</p>
+<p>In Grails<sup>®</sup> 3 applications, logging is handled by the <a
href="https://grails.apache.org/docs/latest/guide/conf.html#logging">Logback
logging framework</a>. Grails artifacts are configured with logging out of the
box. The developer simply invokes <code>log.info("log
whatever")</code> and it works. But how do we create unit tests that
assert that logs occur with the appropriate level?</p>
<p>This blog will highlight some mock logging techniques and when to use
them.</p>
<h2>Default Grails Logging in Unit Tests</h2>
<p>First let's get the obvious out of the way for clarity. If you are not
concerned about testing how logs operate in your application, there is no
reason to worry about mocking loggers in Grails apps.</p>
diff --git a/blog/2019-01-30.html b/blog/2019-01-30.html
index 696feb21c5d..764a65ad052 100644
--- a/blog/2019-01-30.html
+++ b/blog/2019-01-30.html
@@ -111,15 +111,15 @@
</h2>
<div class='threecolumns'>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
+ <h2>Quickcast #10: Debugging Grails® Apps</h2>
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #10: Debugging Grails® Apps</h2>
+ <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
diff --git a/blog/2019-02-19.html b/blog/2019-02-19.html
index 54c2e8d03af..497516cb795 100644
--- a/blog/2019-02-19.html
+++ b/blog/2019-02-19.html
@@ -104,7 +104,7 @@
</ul>
<p>In addition, <a href="https://micronaut.io/"
title="Micronaut">Micronaut</a> is now included as part of the Grails framework
as the parent ApplicationContext, allowing any Micronaut feature, whether it be
the declarative HTTP client or the Kafka client, to be used within a Grails 4
application.</p>
<p>Startup time and memory consumption have also been optimized and improved
significantly over previous releases, thanks to changes in both Spring Boot 2.1
and also the migration of some of the Grails framework's internal
infrastructure wiring to Micronaut.</p>
-<p>Many Grails plugins have been verified as working with Grails 4, and for
those within the Grails plugin community, now is the time to upgrade your
plugins and verify the plugins continue to work with Grails 4. As this is a new
major version, <a href="https://docs.grails.org/4.0.x/guide/upgrading.html">API
changes have been made</a>, as well as changes within Spring Boot, Groovy, and
Hibernate that may require changes to work with Grails 4. Please read the <a
href="https://docs.grails. [...]
+<p>Many Grails plugins have been verified as working with Grails 4, and for
those within the Grails plugin community, now is the time to upgrade your
plugins and verify the plugins continue to work with Grails 4. As this is a new
major version, <a
href="https://grails.apache.org/docs/4.0.x/guide/upgrading.html">API changes
have been made</a>, as well as changes within Spring Boot, Groovy, and
Hibernate that may require changes to work with Grails 4. Please read the <a
href="https://grail [...]
<p>Thanks to all those who contributed to the release, and we look forward to
your feedback and to seeing you at Devnexus 2019.</p>
<h2 class='space-above'>
<span>You might also like ...</span>
diff --git a/blog/2019-07-11.html b/blog/2019-07-11.html
index cc73d260980..12819b709e2 100644
--- a/blog/2019-07-11.html
+++ b/blog/2019-07-11.html
@@ -105,7 +105,7 @@
</ul>
<p>In addition, <a href="https://micronaut.io/"
title="Micronaut">Micronaut</a> is now included as part of the Grails framework
as the parent ApplicationContext, allowing any Micronaut feature, whether it be
the declarative HTTP client or the Kafka client, to be used within a Grails 4
application. In fact the <a
href="https://docs.micronaut.io/latest/guide/index.html#httpClient">Micronaut
HTTP client</a> is now considered the supported HTTP client for use within
Grails applications.</p>
<p>Startup time and memory consumption have also been optimized and improved
significantly over previous releases, thanks to changes in both Spring Boot 2.1
and also the migration of some of the Grails framework's internal
infrastructure wiring to Micronaut.</p>
-<p>Many Grails plugins have been verified as working with Grails 4. For those
within the Grails plugin community, now is the time to upgrade your plugins and
verify they continue to work with Grails 4. As this is a new major version, <a
href="https://docs.grails.org/4.0.x/guide/upgrading.html">API changes have been
made</a>, as well as changes within Spring Boot, Groovy, and Hibernate that may
require changes to work with Grails 4. Please read the <a
href="https://docs.grails.org/4.0.x/g [...]
+<p>Many Grails plugins have been verified as working with Grails 4. For those
within the Grails plugin community, now is the time to upgrade your plugins and
verify they continue to work with Grails 4. As this is a new major version, <a
href="https://grails.apache.org/docs/4.0.x/guide/upgrading.html">API changes
have been made</a>, as well as changes within Spring Boot, Groovy, and
Hibernate that may require changes to work with Grails 4. Please read the <a
href="https://grails.apache.or [...]
<p>Thanks to all those who contributed to the release, and if you haven't
already, do sign up for <a
href="https://objectcomputing.com/products/micronaut/community/something-big-is-coming">next
week's webinar</a> where we have more exciting announcements related to the
Grails framework and Micronaut planned.</p>
<h2 class='space-above'>
<span>You might also like ...</span>
diff --git a/blog/2022-07-18-rce-vulnerability.html
b/blog/2022-07-18-rce-vulnerability.html
index 0f51ac90bd1..35aa2889561 100644
--- a/blog/2022-07-18-rce-vulnerability.html
+++ b/blog/2022-07-18-rce-vulnerability.html
@@ -98,7 +98,7 @@
<p>Updated impacted Grails framework versions.</p>
<h2>Overview</h2>
<p>The Grails team has confirmed a critical security vulnerability reported by
meizjm3i and codeplutos of AntGroup FG Security Lab. This vulnerability has
been assigned identifier <a
href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35912">CVE-2022-35912</a>.</p>
-<p>The vulnerability allows an attacker to remotely execute code within a
Grails application runtime by issuing a specially crafted web request that
grants the attacker access to the class loader. This attack exploits a section
of the Grails data-binding logic. Grails data-binding is invoked in a number
of ways including the creation of command objects, domain class construction,
and manual data binding when using <code>bindData</code>. For a full
description, please refer to <a href=" [...]
+<p>The vulnerability allows an attacker to remotely execute code within a
Grails application runtime by issuing a specially crafted web request that
grants the attacker access to the class loader. This attack exploits a section
of the Grails data-binding logic. Grails data-binding is invoked in a number
of ways including the creation of command objects, domain class construction,
and manual data binding when using <code>bindData</code>. For a full
description, please refer to <a href=" [...]
<h2>Impacted Applications</h2>
<ul>
<li>Grails framework versions
diff --git a/blog/2022-09-28-static-binding-bug.html
b/blog/2022-09-28-static-binding-bug.html
index 17888d800d3..78c1300dbfa 100644
--- a/blog/2022-09-28-static-binding-bug.html
+++ b/blog/2022-09-28-static-binding-bug.html
@@ -105,7 +105,7 @@
<p>This can occur when manually calling <strong>bindData</strong> (or one of
several variants) given the conditions above. Under particular additional
conditions, controller actions that automatically bind request data to (nested)
command objects may cause static properties to change.</p>
<h2>The constraints property</h2>
<p>One common property that represents an important part of the functionality
in the Grails framework is the <strong>constraints</strong> property. The
<strong>constraints</strong> property allows classes that implement the
<strong>Validateable</strong> trait to check that the data in an instance of
the class is valid. It is also a static property that could be overwritten due
to this bug, potentially leading to data corruption. Because of this
possibility, we feel it is important for [...]
-<p>For more information about data validation functionality available in the
Grails framework, please see the <a
href="https://docs.grails.org/5.2.4/guide/validation.html">documentation</a>.</p>
+<p>For more information about data validation functionality available in the
Grails framework, please see the <a
href="https://grails.apache.org/docs/5.2.4/guide/validation.html">documentation</a>.</p>
<h2>Resolution</h2>
<p>The Grails Team recommends that all Grails applications be upgraded to a
patched Grails release. Grails 4.x applications can be upgraded to version
4.1.2 or higher, and Grails 5.x applications can be upgraded to 5.2.3 or
higher.</p>
<p>We have released a patched version of Grails 3 for this bug. Grails 3.x
applications can be upgraded to version 3.3.16.</p>
diff --git a/blog/2023-03-29-grails-6-m2.html b/blog/2023-03-29-grails-6-m2.html
index b941ec11c64..f61f40a1658 100644
--- a/blog/2023-03-29-grails-6-m2.html
+++ b/blog/2023-03-29-grails-6-m2.html
@@ -111,7 +111,7 @@
</li>
</ul>
<p>Starting with Grails 6, there will not be a Grails CLI wrapper in new
projects. Many of the commands offered by the legacy CLI can be run directly
from Gradle. For example, <code>./grailsw run-app</code> can be achieved with
<code>./gradlew bootRun</code>. For commands that alter the files of a Grails
project like <code>create-controller</code>, you will be able to use the
globally-installed Grails CLI from within the project folder.</p>
-<p>There are some specific commands which are supported via plugins that may
not work with the New CLI, these commands are written as Groovy scripts and
need to be converted to Grails ApplicationCommand which would make them
available as Gradle tasks. You can find more information in the Grails
Documentation about <a
href="https://docs.grails.org/latest/guide/commandLine.html#creatingCustomCommands">creating
custom commands</a>. Alternatively, we can rewrite commands in the New Grails
CL [...]
+<p>There are some specific commands which are supported via plugins that may
not work with the New CLI, these commands are written as Groovy scripts and
need to be converted to Grails ApplicationCommand which would make them
available as Gradle tasks. You can find more information in the Grails
Documentation about <a
href="https://grails.apache.org/docs/latest/guide/commandLine.html#creatingCustomCommands">creating
custom commands</a>. Alternatively, we can rewrite commands in the New Gr [...]
<h2>Installation</h2>
<h3>Installing with SDKMan</h3>
<p>The easiest way to install new Grails CLI is with <a
href="https://sdkman.io">SDKMan</a>, run the following command:</p>
@@ -150,7 +150,7 @@ sdk use grails dev
</ul>
<p>We will soon add support for REST API Plugin, ReactJS and AngularJS
application types.</p>
<h2>The Grails Scaffolding Plugin</h2>
-<p>The Grails Scaffolding plugin, which defines commands such as generate-all
and generate-controller, will not work because it uses the command scripts. In
Grails 3, we introduced the concept of an ApplicationCommand which has similar
abilities as scripts in regards to retrieving arguments, template generation,
file access, and model building. For more information, please read the Grails
documentation for <a
href="https://docs.grails.org/latest/guide/commandLine.html#creatingCustomComma
[...]
+<p>The Grails Scaffolding plugin, which defines commands such as generate-all
and generate-controller, will not work because it uses the command scripts. In
Grails 3, we introduced the concept of an ApplicationCommand which has similar
abilities as scripts in regards to retrieving arguments, template generation,
file access, and model building. For more information, please read the Grails
documentation for <a
href="https://grails.apache.org/docs/latest/guide/commandLine.html#creatingCust
[...]
<h2>Why should you upgrade to Grails 6?</h2>
<ul>
<li>With the future release of Grails 7, we are planning a move to Java 17 as
a baseline, so Grails 6 provides an easy upgrade path to users or applications
who are planning to move to Java 17.</li>
diff --git a/blog/2023-07-25-introducing-grails-6.html
b/blog/2023-07-25-introducing-grails-6.html
index 7c4c2a7c842..5449c65a615 100644
--- a/blog/2023-07-25-introducing-grails-6.html
+++ b/blog/2023-07-25-introducing-grails-6.html
@@ -139,7 +139,7 @@
<h2>Join the Grails Community: A Collective Journey</h2>
<p>At the heart of Grails lies its vibrant and passionate community of
developers, whose contributions play a pivotal role in shaping the framework's
evolution. Community contributions not only enhance the feature set of Grails
but also address bugs, provide valuable feedback, and share best practices. The
active involvement of the community fosters a collaborative environment where
ideas are shared, discussed, and refined, ultimately benefiting all Grails
users. With Grails 6, we encour [...]
<p>In conclusion, Grails 6 represents a significant advancement in web
development, providing developers with a powerful platform to build exceptional
applications. Embrace Grails 6 and its advancements in Java, Spring, Spring
Boot, and Micronaut integration to unlock the full potential of modern web
development and embark on an exciting journey towards creating innovative and
scalable applications.</p>
-<p>To download and get started with Grails 6, visit the official Grails
documentation: <a
href="https://docs.grails.org/latest/guide/gettingStarted.html#downloadingAndInstalling">docs.grails.org/latest/guide/gettingStarted.html#downloadingAndInstalling</a>.</p>
+<p>To download and get started with Grails 6, visit the official Grails
documentation: <a
href="https://grails.apache.org/docs/latest/guide/gettingStarted.html#downloadingAndInstalling">https://grails.apache.org/docs/latest/guide/gettingStarted.html#downloadingAndInstalling</a>.</p>
<p><strong>Happy Coding with Grails 6!</strong></p>
<h2 class='space-above'>
<span>You might also like ...</span>
diff --git a/blog/2024-12-23-grails-7-m1.html b/blog/2024-12-23-grails-7-m1.html
index a0f6a189576..846038975c0 100644
--- a/blog/2024-12-23-grails-7-m1.html
+++ b/blog/2024-12-23-grails-7-m1.html
@@ -298,7 +298,7 @@ grailsGradlePluginVersion=7.0.0-M3
</code></pre>
</li>
<li>
-<p>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-M1/guide/upgrading.html#upgrading60x.</p>
+<p>Make any necessary adjustments to your application code, configuration, and
dependencies to ensure compatibility with the new version. See
https://grails.apache.org/docs/7.0.0-M1/guide/upgrading.html#upgrading60x.</p>
</li>
</ol>
<p>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-M1.</p>
diff --git a/blog/2025-03-05-grails-7-m3.html b/blog/2025-03-05-grails-7-m3.html
index 4d3e9841750..8e651d85c9d 100644
--- a/blog/2025-03-05-grails-7-m3.html
+++ b/blog/2025-03-05-grails-7-m3.html
@@ -320,7 +320,7 @@ grailsGradlePluginVersion=7.0.0-M4
</li>
<li>
<p>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-M3/guide/upgrading.html#upgrading60x.</p>
+the new version. See
https://grails.apache.org/docs/7.0.0-M3/guide/upgrading.html#upgrading60x.</p>
</li>
</ol>
<p>Normally, Grails Core dependencies are automatically updated using the
Grails Bill of Materials (BOM). However, if you
diff --git a/blog/2025-06-10-grails-7-m4.html b/blog/2025-06-10-grails-7-m4.html
index d5387c21995..c214bf2f548 100644
--- a/blog/2025-06-10-grails-7-m4.html
+++ b/blog/2025-06-10-grails-7-m4.html
@@ -165,7 +165,7 @@ meaning anyone can view your information. Make sure your
email client does not a
<li>Addition of NOTICE to Grails Source</li>
<li>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.</li>
</ul>
-<p>Upgrade instructions are available in the <a
href="https://docs.grails.org/7.0.0-M4/guide/upgrading.html#upgrading60x">documentation</a>.</p>
+<p>Upgrade instructions are available in the <a
href="https://grails.apache.org/docs/7.0.0-M4/guide/upgrading.html#upgrading60x">documentation</a>.</p>
<h2>Dependency Upgrades</h2>
<p>In this release, we've upgraded several dependency versions, including but
not limited to the following:</p>
<ul>
@@ -175,7 +175,7 @@ meaning anyone can view your information. Make sure your
email client does not a
<li>Spring Boot 3.5.0</li>
<li>Gradle 8.14</li>
<li>Spock 2.3-groovy-4.0</li>
-<li>See all in the <a
href="https://docs.grails.org/7.0.0-M4/ref/Versions/Grails%20BOM.html">grails-bom</a>.</li>
+<li>See all in the <a
href="https://grails.apache.org/docs/7.0.0-M4/ref/Versions/Grails%20BOM.html">grails-bom</a>.</li>
</ul>
<h2>Installing Grails 7.0.0-M4</h2>
<p>Try out Grails 7.0.0-M4 today by visiting the online app creator * <a
href="https://start.grails.org/">Grails Forge</a>.
@@ -215,7 +215,7 @@ groovy.version=4.0.27
</li>
<li>
<p>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/upgrading.html#upgrading60x.</p>
+the new version. See
https://grails.apache.org/docs/7.0.0-M4/guide/upgrading.html#upgrading60x.</p>
</li>
</ol>
<p>Normally, Grails Core dependencies are automatically updated using the
Grails Bill of Materials (BOM). However, if you
diff --git a/blog/2025-07-15-grails-7-m5.html b/blog/2025-07-15-grails-7-m5.html
index ca909e6758c..6274e605aa0 100644
--- a/blog/2025-07-15-grails-7-m5.html
+++ b/blog/2025-07-15-grails-7-m5.html
@@ -147,7 +147,7 @@ We encourage you to try this pre-release version and
provide your feedback <a hr
<li>#14316 Use local repo commands instead of the github api for Release Drop
Down population by @JudeRV in #14834</li>
</ul>
<p>Full Changelog: <a
href="https://github.com/apache/grails-core/compare/v7.0.0-M4...v7.0.0-M5">v7.0.0-M4...v7.0.0-M5</a></p>
-<p>Upgrade instructions are available in the <a
href="https://docs.grails.org/7.0.0-M5/guide/upgrading.html#upgrading60x">documentation</a>.</p>
+<p>Upgrade instructions are available in the <a
href="https://grails.apache.org/docs/7.0.0-M5/guide/upgrading.html#upgrading60x">documentation</a>.</p>
<h2>Dependency Upgrades</h2>
<p>In this release, we've upgraded several dependency versions, including but
not limited to the following:</p>
<ul>
@@ -156,13 +156,13 @@ We encourage you to try this pre-release version and
provide your feedback <a hr
<li>Spring Framework 6.2.8</li>
<li>Spring Boot 3.5.3</li>
<li>Gradle 8.14.2</li>
-<li>See all in the <a
href="https://docs.grails.org/7.0.0-M5/ref/Versions/Grails%20BOM.html">grails-bom</a>.</li>
+<li>See all in the <a
href="https://grails.apache.org/docs/7.0.0-M5/ref/Versions/Grails%20BOM.html">grails-bom</a>.</li>
</ul>
<h2>Generating a new Grails 7.0.0-M5 application with Grails Forge</h2>
<p>Try out Grails today by visiting our online application generator <a
href="https://start.grails.org/">Grails Forge</a>. This is the quickest and
the recommended way to get started with Grails.</p>
<p>After installing the JetBrains' IntelliJ IDEA <a
href="https://plugins.jetbrains.com/plugin/18504-grails">Grails Plugin</a>, the
Grails Application Forge will also be available under New Project in IntelliJ
IDEA.</p>
<p>Within your newly generated project you can access the Grails CLIs with the
grails wrapper</p>
-<p>See <a
href="https://docs.grails.org/7.0.0-M5/guide/gettingStarted.html#downloadingAndInstalling">Types
of CLI</a> for details on each CLI</p>
+<p>See <a
href="https://grails.apache.org/docs/7.0.0-M5/guide/gettingStarted.html#downloadingAndInstalling">Types
of CLI</a> for details on each CLI</p>
<p>grail-shell-cli</p>
<pre><code class="language-shell">grailsw
</code></pre>
@@ -171,7 +171,7 @@ We encourage you to try this pre-release version and
provide your feedback <a hr
</code></pre>
<h2>Installing Grails CLIs 7.0.0-M5 with SDKMan</h2>
<p>Alternatively, you can quickly install Grails 7.0.0-M5 CLIs
(grails-shell-cli and grails-forge-cli) using <a
href="https://sdkman.io/">SDKMan</a>.</p>
-<p>See <a
href="https://docs.grails.org/7.0.0-M5/guide/gettingStarted.html#downloadingAndInstalling">Types
of CLI</a> for details on each CLI</p>
+<p>See <a
href="https://grails.apache.org/docs/7.0.0-M5/guide/gettingStarted.html#downloadingAndInstalling">Types
of CLI</a> for details on each CLI</p>
<ol>
<li>
<p>If you don't have SDKMan installed, follow the instructions at <a
href="https://sdkman.io/install/">SDKMan Installation Guide</a>
@@ -213,7 +213,7 @@ to set it up.</p>
</li>
<li>
<p>Make any necessary adjustments to your application code, configuration, and
dependencies to ensure compatibility with
-the new version. <a
href="https://docs.grails.org/7.0.0-M5/guide/upgrading.html#upgrading60x">See
Upgrade Guide</a></p>
+the new version. <a
href="https://grails.apache.org/docs/7.0.0-M5/guide/upgrading.html#upgrading60x">See
Upgrade Guide</a></p>
</li>
</ol>
<p>Normally, Grails Core dependencies are automatically updated using the
Grails Bill of Materials (BOM). However, if you
diff --git a/blog/2025-08-10-grails-7-rc1.html
b/blog/2025-08-10-grails-7-rc1.html
index 53656ad3bf0..cb4a6f12433 100644
--- a/blog/2025-08-10-grails-7-rc1.html
+++ b/blog/2025-08-10-grails-7-rc1.html
@@ -142,7 +142,7 @@ We encourage you to try this pre-release version and
provide your feedback <a hr
<li>fix: #13705 - revert changes to Metadata from micronaut removal
@jdaugherty (#14897)</li>
</ul>
<p>Full Changelog: <a
href="https://github.com/apache/grails-core/compare/v7.0.0-M5...v7.0.0-RC1">v7.0.0-M5...v7.0.0-RC1</a></p>
-<p>Upgrade instructions are available in the <a
href="https://docs.grails.org/7.0.0-RC1/guide/upgrading.html#upgrading60x">documentation</a>.</p>
+<p>Upgrade instructions are available in the <a
href="https://grails.apache.org/docs/7.0.0-RC1/guide/upgrading.html#upgrading60x">documentation</a>.</p>
<h2>Dependency Upgrades</h2>
<p>In this release, we've upgraded several dependency versions, including but
not limited to the following:</p>
<ul>
@@ -151,13 +151,13 @@ We encourage you to try this pre-release version and
provide your feedback <a hr
<li>Spring Framework 6.2.9</li>
<li>Spring Boot 3.5.4</li>
<li>Gradle 8.14.3</li>
-<li>See all in the <a
href="https://docs.grails.org/7.0.0-RC1/ref/Versions/Grails%20BOM.html">grails-bom</a>.</li>
+<li>See all in the <a
href="https://grails.apache.org/docs/7.0.0-RC1/ref/Versions/Grails%20BOM.html">grails-bom</a>.</li>
</ul>
<h2>Generating a new Grails 7.0.0-RC1 application with Grails Forge</h2>
<p>Try out Grails today by visiting our online application generator <a
href="https://start.grails.org">Grails Forge</a>. This is the quickest and the
recommended way to get started with Grails.</p>
<p>After installing JetBrains' IntelliJ IDEA 2025.2 or later and the <a
href="https://plugins.jetbrains.com/plugin/18504-grails">Grails Plugin</a>, the
Grails Application Forge will also be available under New Project in IntelliJ
IDEA.</p>
<p>Within your newly generated project you can access the Grails CLIs with the
Grails Wrapper.</p>
-<p>See the <a
href="https://docs.grails.org/7.0.0-RC1/guide/gettingStarted.html#_types_of_command_line_interface_cli">Types
of CLI</a> section in the documentation for details on each CLI.</p>
+<p>See the <a
href="https://grails.apache.org/docs/7.0.0-RC1/guide/gettingStarted.html#_types_of_command_line_interface_cli">Types
of CLI</a> section in the documentation for details on each CLI.</p>
<p>grail-shell-cli</p>
<pre><code class="language-shell">grailsw
</code></pre>
@@ -166,7 +166,7 @@ We encourage you to try this pre-release version and
provide your feedback <a hr
</code></pre>
<h2>Installing Grails CLIs 7.0.0-RC1 with SDKMan</h2>
<p>Alternatively, you can quickly install Grails 7.0.0-RC1 CLIs
(grails-shell-cli and grails-forge-cli) using <a
href="https://sdkman.io">SDKMan</a>.</p>
-<p>See the <a
href="https://docs.grails.org/7.0.0-RC1/guide/gettingStarted.html#_types_of_command_line_interface_cli">Types
of CLI</a> section in the documentation for details on each CLI.</p>
+<p>See the <a
href="https://grails.apache.org/docs/7.0.0-RC1/guide/gettingStarted.html#_types_of_command_line_interface_cli">Types
of CLI</a> section in the documentation for details on each CLI.</p>
<ol>
<li>
<p>If you don't have SDKMan installed, follow the instructions at <a
href="https://sdkman.io/install">SDKMan Installation Guide</a> to set it up.</p>
@@ -207,7 +207,7 @@ We encourage you to try this pre-release version and
provide your feedback <a hr
</li>
<li>
<p>Make any necessary adjustments to your application code, configuration, and
dependencies to ensure compatibility with
-the new version. <a
href="https://docs.grails.org/7.0.0-RC1/guide/upgrading.html#upgrading60x">See
Upgrade Guide</a></p>
+the new version. <a
href="https://grails.apache.org/docs/7.0.0-RC1/guide/upgrading.html#upgrading60x">See
Upgrade Guide</a></p>
</li>
</ol>
<p>Normally, Grails Core dependencies are automatically updated using the
Grails Bill of Materials (BOM). However, if you
diff --git a/blog/2025-09-11-grails-7-rc2.html
b/blog/2025-09-11-grails-7-rc2.html
index f4fe477afbb..5b56924c80c 100644
--- a/blog/2025-09-11-grails-7-rc2.html
+++ b/blog/2025-09-11-grails-7-rc2.html
@@ -171,7 +171,7 @@ We encourage you to try this pre-release version and
provide your feedback <a hr
<li>chore: correct wording for the voting window @matrei (#14954)</li>
</ul>
<p>Full Changelog: <a
href="https://github.com/apache/grails-core/compare/v7.0.0-RC1...v7.0.0-RC2">v7.0.0-RC1...v7.0.0-RC2</a></p>
-<p>Upgrade instructions are available in the <a
href="https://docs.grails.org/7.0.0-RC2/guide/upgrading.html#upgrading60x">documentation</a>.</p>
+<p>Upgrade instructions are available in the <a
href="https://grails.apache.org/docs/7.0.0-RC2/guide/upgrading.html#upgrading60x">documentation</a>.</p>
<h2>Additional Releases</h2>
<p>The following plugins and tools are being released alongside Grails
7.0.0-RC2:</p>
<h3>Grails Spring Security 7.0.0-RC2</h3>
@@ -202,13 +202,13 @@ The actions being released are used in gradle projects
for their release workflo
<li>Asset Pipeline 5.0.16 (now cloud.wondrify.asset-pipeline)</li>
<li>Spring Framework 6.2.10</li>
<li>Spring Boot 3.5.5</li>
-<li>See all in the <a
href="https://docs.grails.org/7.0.0-RC2/ref/Versions/Grails%20BOM.html">grails-bom</a>.</li>
+<li>See all in the <a
href="https://grails.apache.org/docs/7.0.0-RC2/ref/Versions/Grails%20BOM.html">grails-bom</a>.</li>
</ul>
<h2>Generating a new Grails 7.0.0-RC2 application with Grails Forge</h2>
<p>Try out Grails today by visiting our online application generator <a
href="https://start.grails.org">Grails Forge</a>. This is the quickest and the
recommended way to get started with Grails.</p>
<p>After installing JetBrains' IntelliJ IDEA 2025.2 or later and the <a
href="https://plugins.jetbrains.com/plugin/18504-grails">Grails Plugin</a>, the
Grails Application Forge will also be available under New Project in IntelliJ
IDEA.</p>
<p>Within your newly generated project you can access the Grails CLIs with the
Grails Wrapper.</p>
-<p>See the <a
href="https://docs.grails.org/7.0.0-RC2/guide/gettingStarted.html#_types_of_command_line_interface_cli">Types
of CLI</a> section in the documentation for details on each CLI.</p>
+<p>See the <a
href="https://grails.apache.org/docs/7.0.0-RC2/guide/gettingStarted.html#_types_of_command_line_interface_cli">Types
of CLI</a> section in the documentation for details on each CLI.</p>
<p>grail-shell-cli</p>
<pre><code class="language-shell">grailsw
</code></pre>
@@ -217,7 +217,7 @@ The actions being released are used in gradle projects for
their release workflo
</code></pre>
<h2>Installing Grails CLIs 7.0.0-RC2 with SDKMan</h2>
<p>Alternatively, you can quickly install Grails 7.0.0-RC2 CLIs
(grails-shell-cli and grails-forge-cli) using <a
href="https://sdkman.io">SDKMan</a>.</p>
-<p>See the <a
href="https://docs.grails.org/7.0.0-RC2/guide/gettingStarted.html#_types_of_command_line_interface_cli">Types
of CLI</a> section in the documentation for details on each CLI.</p>
+<p>See the <a
href="https://grails.apache.org/docs/7.0.0-RC2/guide/gettingStarted.html#_types_of_command_line_interface_cli">Types
of CLI</a> section in the documentation for details on each CLI.</p>
<ol>
<li>
<p>If you don't have SDKMan installed, follow the instructions at <a
href="https://sdkman.io/install">SDKMan Installation Guide</a> to set it up.</p>
@@ -258,7 +258,7 @@ The actions being released are used in gradle projects for
their release workflo
</li>
<li>
<p>Make any necessary adjustments to your application code, configuration, and
dependencies to ensure compatibility with
-the new version. <a
href="https://docs.grails.org/7.0.0-RC2/guide/upgrading.html#upgrading60x">See
Upgrade Guide</a></p>
+the new version. <a
href="https://grails.apache.org/docs/7.0.0-RC2/guide/upgrading.html#upgrading60x">See
Upgrade Guide</a></p>
<ul>
<li>remove <code>org.apache.grails:grails-i18n</code> from your dependency
list, it has changed to <code>org.apache.grails.i18n:grails-i18n</code> and is
provided transitively by default</li>
</ul>
diff --git a/blog/2025-10-07-apache-grails-graduation-top-level-project.html
b/blog/2025-10-07-apache-grails-graduation-top-level-project.html
index 2652688de6a..81392b54063 100644
--- a/blog/2025-10-07-apache-grails-graduation-top-level-project.html
+++ b/blog/2025-10-07-apache-grails-graduation-top-level-project.html
@@ -169,7 +169,7 @@ Special thanks to:</p>
<h3>Resources</h3>
<ul>
<li><a href="https://grails.apache.org/">Website</a></li>
-<li><a href="https://docs.grails.org/latest/">Documentation</a></li>
+<li><a href="https://grails.apache.org/docs/latest/">Documentation</a></li>
<li><a href="https://github.com/apache/grails-core">GitHub</a></li>
<li><a
href="https://lists.apache.org/[email protected]">Developer
Mailing List</a></li>
<li><a href="https://lists.apache.org/[email protected]">Users
Mailing List</a></li>
diff --git a/blog/index.html b/blog/index.html
index 0c35d0376dc..2a08c3fe674 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -506,15 +506,15 @@
</a>
</article></div></div><div class="threecolumns">
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
+ <h2>Quickcast #10: Debugging Grails® Apps</h2>
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #10: Debugging Grails® Apps</h2>
+ <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/2018-06-22.jpg)'>
@@ -662,27 +662,27 @@
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2017-01-20-3.html'>
+ <a href='https://grails.apache.org/blog/2017-01-20-4.html'>
<h3>January 20, 2017</h3>
- <h2>Quickcast #5: Retrieving Runtime Config Value...</h2>
+ <h2>Quickcast #6: Developing Grails® 3 Applicatio...</h2>
</a>
</article></div></div><div class="threecolumns">
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2017-01-20-1.html'>
+ <a href='https://grails.apache.org/blog/2017-01-20-2.html'>
<h3>January 20, 2017</h3>
- <h2>Quickcast #3: Multi-Project Builds</h2>
+ <h2>Quickcast #4: Angular Scaffolding</h2>
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2017-01-20-2.html'>
+ <a href='https://grails.apache.org/blog/2017-01-20-1.html'>
<h3>January 20, 2017</h3>
- <h2>Quickcast #4: Angular Scaffolding</h2>
+ <h2>Quickcast #3: Multi-Project Builds</h2>
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2017-01-20-4.html'>
+ <a href='https://grails.apache.org/blog/2017-01-20-3.html'>
<h3>January 20, 2017</h3>
- <h2>Quickcast #6: Developing Grails® 3 Applicatio...</h2>
+ <h2>Quickcast #5: Retrieving Runtime Config Value...</h2>
</a>
</article></div></div><div class="threecolumns">
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/2016-12-14.jpg)'>
diff --git a/blog/tag/quickcast.html b/blog/tag/quickcast.html
index c870fce1d1b..a7a47da5e45 100644
--- a/blog/tag/quickcast.html
+++ b/blog/tag/quickcast.html
@@ -97,15 +97,15 @@
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
+ <h2>Quickcast #10: Debugging Grails® Apps</h2>
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2018-08-22-1.html'>
+ <a href='https://grails.apache.org/blog/2018-08-22-2.html'>
<h3>August 22, 2018</h3>
- <h2>Quickcast #10: Debugging Grails® Apps</h2>
+ <h2>Quickcast #11: Grails® Profiling with YourKit</h2>
</a>
</article></div></div><div class="threecolumns">
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
@@ -127,27 +127,27 @@
</a>
</article></div></div><div class="threecolumns">
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2017-01-20-3.html'>
+ <a href='https://grails.apache.org/blog/2017-01-20-4.html'>
<h3>January 20, 2017</h3>
- <h2>Quickcast #5: Retrieving Runtime Config Value...</h2>
+ <h2>Quickcast #6: Developing Grails® 3 Applicatio...</h2>
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2017-01-20-1.html'>
+ <a href='https://grails.apache.org/blog/2017-01-20-2.html'>
<h3>January 20, 2017</h3>
- <h2>Quickcast #3: Multi-Project Builds</h2>
+ <h2>Quickcast #4: Angular Scaffolding</h2>
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2017-01-20-2.html'>
+ <a href='https://grails.apache.org/blog/2017-01-20-1.html'>
<h3>January 20, 2017</h3>
- <h2>Quickcast #4: Angular Scaffolding</h2>
+ <h2>Quickcast #3: Multi-Project Builds</h2>
</a>
</article></div></div><div class="threecolumns">
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2017-01-20-4.html'>
+ <a href='https://grails.apache.org/blog/2017-01-20-3.html'>
<h3>January 20, 2017</h3>
- <h2>Quickcast #6: Developing Grails® 3 Applicatio...</h2>
+ <h2>Quickcast #5: Retrieving Runtime Config Value...</h2>
</a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/quickcast.jpg)'>
diff --git a/documentation.html b/documentation.html
index 1a88b641f88..986ff6aaf56 100644
--- a/documentation.html
+++ b/documentation.html
@@ -95,10 +95,10 @@
</div>
<ul>
<li>
- <a href='https://docs.grails.org/7.0.0-RC2/'>User Guide</a>
+ <a href='https://grails.apache.org/docs/7.0.0-RC2/'>User Guide</a>
</li>
<li>
- <a href='https://docs.grails.org/7.0.0-RC2/api/'>API Reference</a>
+ <a href='https://grails.apache.org/docs/7.0.0-RC2/api/'>API Reference</a>
</li>
</ul>
</div><div class='guidegroup'>
@@ -108,10 +108,10 @@
</div>
<ul>
<li>
- <a href='https://docs.grails.org/snapshot/'>User Guide</a>
+ <a href='https://grails.apache.org/docs/snapshot/'>User Guide</a>
</li>
<li>
- <a href='https://docs.grails.org/snapshot/api/'>API Reference</a>
+ <a href='https://grails.apache.org/docs/snapshot/api/'>API Reference</a>
</li>
</ul>
</div><div class='guidegroup'>
@@ -121,10 +121,10 @@
</div>
<ul>
<li>
- <a
href='https://docs.grails.org/latest/grails-data/hibernate5/manual/'>GORM
Hibernate</a>
+ <a
href='https://grails.apache.org/docs/latest/grails-data/hibernate5/manual/'>GORM
Hibernate</a>
</li>
<li>
- <a
href='https://docs.grails.org/latest/grails-data/mongodb/manual/'>GORM
MongoDb</a>
+ <a
href='https://grails.apache.org/docs/latest/grails-data/mongodb/manual/'>GORM
MongoDb</a>
</li>
<li>
<a href='https://gorm.grails.org/latest/neo4j/manual/index.html'>GORM
Neo4j</a>
@@ -175,10 +175,10 @@
</div>
<ul>
<li>
- <a href='https://docs.grails.org/6.2.3/'>User Guide</a>
+ <a href='https://grails.apache.org/docs/6.2.3/'>User Guide</a>
</li>
<li>
- <a href='https://docs.grails.org/6.2.3/api/'>API Reference</a>
+ <a href='https://grails.apache.org/docs/6.2.3/api/'>API Reference</a>
</li>
</ul>
</div>
@@ -187,19 +187,19 @@
<p>Browse previous versions' documentation since Grails 1.2.0</p>
<div class='versionselector'>
<h4>Single Page - User Guide</h4>
- <select
onchange='window.location.href='https://docs.grails.org/' +
this.value + '/''>
+ <select
onchange='window.location.href='https://grails.apache.org/docs/' +
this.value + '/''>
<option>Select a version</option><option>6.2.3</option>
<option>6.2.2</option> <option>6.2.1</option> <option>6.2.0</option>
<option>6.2.0</option> <option>6.1.2</option> <option>6.1.2</option>
<option>6.1.1</option> <option>6.1.1</option> <option>6.1.0</option>
<option>6.0.0</option> <option>5.3.6</option> <option>5.3.5</option>
<option>5.3.4</option> <option>5.3.3</option> <option>5.3.2</option>
<option>5.3.1</option> <option>5.3.0</option> <option>5.2.6</option> <option>5.
[...]
</select>
</div>
<div class='versionselector'>
<h4>User Guide</h4>
- <select
onchange='window.location.href='https://docs.grails.org/' +
this.value'>
+ <select
onchange='window.location.href='https://grails.apache.org/docs/' +
this.value'>
<option>Select a version</option><option>6.2.3</option>
<option>6.2.2</option> <option>6.2.1</option> <option>6.2.0</option>
<option>6.2.0</option> <option>6.1.2</option> <option>6.1.2</option>
<option>6.1.1</option> <option>6.1.1</option> <option>6.1.0</option>
<option>6.0.0</option> <option>5.3.6</option> <option>5.3.5</option>
<option>5.3.4</option> <option>5.3.3</option> <option>5.3.2</option>
<option>5.3.1</option> <option>5.3.0</option> <option>5.2.6</option> <option>5.
[...]
</select>
</div>
<div class='versionselector'>
<h4>API Reference</h4>
- <select
onchange='window.location.href='https://docs.grails.org/' +
this.value + '/api''>
+ <select
onchange='window.location.href='https://grails.apache.org/docs/' +
this.value + '/api''>
<option>Select a version</option><option>6.2.3</option>
<option>6.2.2</option> <option>6.2.1</option> <option>6.2.0</option>
<option>6.2.0</option> <option>6.1.2</option> <option>6.1.2</option>
<option>6.1.1</option> <option>6.1.1</option> <option>6.1.0</option>
<option>6.0.0</option> <option>5.3.6</option> <option>5.3.5</option>
<option>5.3.4</option> <option>5.3.3</option> <option>5.3.2</option>
<option>5.3.1</option> <option>5.3.0</option> <option>5.2.6</option> <option>5.
[...]
</select>
</div>
@@ -210,7 +210,7 @@
</div>
<ul>
<li>
- <a href='https://docs.grails.org/latest/guide/upgrading.html'>Upgrade
Documentation</a>
+ <a
href='https://grails.apache.org/docs/latest/guide/upgrading.html'>Upgrade
Documentation</a>
</li>
</ul>
</div><div class='guidegroup'>
@@ -220,7 +220,7 @@
</div>
<ul>
<li>
- <a href='https://docs.grails.org/latest/guide/testing.html'>Testing
Framework</a>
+ <a
href='https://grails.apache.org/docs/latest/guide/testing.html'>Testing
Framework</a>
</li>
</ul>
</div><div class='guidegroup'>
@@ -230,13 +230,13 @@
</div>
<ul>
<li>
- <a
href='https://docs.grails.org/latest/guide/theWebLayer.html#gsp'>GSP</a>
+ <a
href='https://grails.apache.org/docs/latest/guide/theWebLayer.html#gsp'>GSP</a>
</li>
<li>
- <a
href='https://docs.grails.org/latest/guide/theWebLayer.html#gson'>JSON Views</a>
+ <a
href='https://grails.apache.org/docs/latest/guide/theWebLayer.html#gson'>JSON
Views</a>
</li>
<li>
- <a
href='https://docs.grails.org/latest/guide/theWebLayer.html#markup'>Markup
Views</a>
+ <a
href='https://grails.apache.org/docs/latest/guide/theWebLayer.html#markup'>Markup
Views</a>
</li>
</ul>
</div><div class='guidegroup'>
@@ -246,7 +246,7 @@
</div>
<ul>
<li>
- <a href='https://docs.grails.org/latest/guide/async.html'>Async
Grails</a>
+ <a href='https://grails.apache.org/docs/latest/guide/async.html'>Async
Grails</a>
</li>
</ul>
</div><div class='guidegroup'>
@@ -256,7 +256,7 @@
</div>
<ul>
<li>
- <a
href='https://docs.grails.org/latest/grails-data/hibernate5/manual/index.html#databaseMigration'>Database
Migration Plugin</a>
+ <a
href='https://grails.apache.org/docs/latest/grails-data/hibernate5/manual/index.html#databaseMigration'>Database
Migration Plugin</a>
</li>
</ul>
</div><div class='guidegroup'>
diff --git a/faq.html b/faq.html
index c1d155d0041..acaffdb5126 100644
--- a/faq.html
+++ b/faq.html
@@ -129,7 +129,7 @@
</div>
<div class='question' id='question_docs'>
- <h2 class='columnheader'>How can I contribute to improving the
documentation?</h2><p>Grails documentation comes in several forms:<br/>- the <a
href="https://docs.grails.org/latest/">reference documentation</a> contains
language specification, user guides, a getting started tutorial, and
more.<br/>- the <a href="api.html">GroovyDoc APIs</a> documents the classes of
the Grails code base<br/>- <a
href="https://github.com/apache/grails-static-website">GitHub</a> allows users
to contrib [...]
+ <h2 class='columnheader'>How can I contribute to improving the
documentation?</h2><p>Grails documentation comes in several forms:<br/>- the <a
href="https://grails.apache.org/docs/latest/">reference documentation</a>
contains language specification, user guides, a getting started tutorial, and
more.<br/>- the <a href="api.html">GroovyDoc APIs</a> documents the classes of
the Grails code base<br/>- <a
href="https://github.com/apache/grails-static-website">GitHub</a> allows users
to [...]
</div>
<div class='question' id='question_code'>
diff --git a/foundation/minutes.xml b/foundation/minutes.xml
index b7d59452316..51e09ec95d0 100644
--- a/foundation/minutes.xml
+++ b/foundation/minutes.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><rss
xmlns:content="http://purl.org/rss/1.0/modules/content/"
version="2.0"><channel><title>Foundation | Grails
Framework</title><link>https://grails.apache.org</link><description>A powerful
Groovy-based web application framework for the JVM built on top of Spring
Boot</description><pubDate>Fri, 10 Oct 2025 00:08:38
GMT</pubDate><item><title>Technology Advisory Board
Meeting</title><link>https://grails.apache.org/foundation/minutes/20221128-tab.html<
[...]
+<?xml version="1.0" encoding="UTF-8"?><rss
xmlns:content="http://purl.org/rss/1.0/modules/content/"
version="2.0"><channel><title>Foundation | Grails
Framework</title><link>https://grails.apache.org</link><description>A powerful
Groovy-based web application framework for the JVM built on top of Spring
Boot</description><pubDate>Fri, 10 Oct 2025 00:27:10
GMT</pubDate><item><title>Technology Advisory Board
Meeting</title><link>https://grails.apache.org/foundation/minutes/20221128-tab.html<
[...]
<h3>Meeting Attendance:</h3>
<ul>
<li><strong>Puneet Behl</strong> - Grails Product Development Lead at Object
Computing</li>
diff --git a/index.html b/index.html
index 15cbc2408f3..85e35def0f8 100644
--- a/index.html
+++ b/index.html
@@ -97,13 +97,13 @@
<div class="calltoaction">
<b>Read the docs</b>
<h2>
- <a href="https://docs.grails.org/7.0.0-RC2/">Documentation
+ <a
href="https://grails.apache.org/docs/7.0.0-RC2/">Documentation
<span class="version">7.0.0-RC2</span>
</a>
</h2>
<br>
<h2>
- <a href="https://docs.grails.org/6.2.3/">Documentation
+ <a
href="https://grails.apache.org/docs/6.2.3/">Documentation
<span class="version">6.2.3</span>
</a>
</h2>
diff --git a/profiles.html b/profiles.html
index c30f5fe9604..76ce562599d 100644
--- a/profiles.html
+++ b/profiles.html
@@ -144,7 +144,7 @@
<h2>Third-Party Profiles</h2>
</div>
<ul>
- <li class='legend'>Use the following documentation to learn how to <a
href="https://docs.grails.org/latest/guide/profiles.html#creatingProfiles">create
your own application profiles</a>
+ <li class='legend'>Use the following documentation to learn how to <a
href="https://grails.apache.org/docs/latest/guide/profiles.html#creatingProfiles">create
your own application profiles</a>
</li>
<li>
<a href='https://github.com/macprzepiora/web-vaadin8'>Vaadin</a>
diff --git a/rss.xml b/rss.xml
index a472e148ff4..72c2207a2a8 100644
--- a/rss.xml
+++ b/rss.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><rss
xmlns:content="http://purl.org/rss/1.0/modules/content/"
version="2.0"><channel><title>Blog | Grails
Framework</title><link>https://grails.apache.org</link><description>A powerful
Groovy-based web application framework for the JVM built on top of Spring
Boot</description><pubDate>Fri, 10 Oct 2025 00:08:40
GMT</pubDate><item><title>Apache Grails Graduates to Top-Level Project at The
Apache Software Foundation</title><link>https://grails.apache.or [...]
+<?xml version="1.0" encoding="UTF-8"?><rss
xmlns:content="http://purl.org/rss/1.0/modules/content/"
version="2.0"><channel><title>Blog | Grails
Framework</title><link>https://grails.apache.org</link><description>A powerful
Groovy-based web application framework for the JVM built on top of Spring
Boot</description><pubDate>Fri, 10 Oct 2025 00:27:13
GMT</pubDate><item><title>Apache Grails Graduates to Top-Level Project at The
Apache Software Foundation</title><link>https://grails.apache.or [...]
<p>The Apache Grails team is excited to announce that Apache Grails has
officially graduated from incubation under the Apache Groovy project to become
a Top-Level Project (TLP) at The Apache Software Foundation (ASF). This
achievement reflects the dedication of our community and underscores the
strength of the ASF's open source ecosystems.</p>
<p><a
href="https://news.apache.org/foundation/entry/the-apache-software-foundation-announces-new-top-level-projects-2">Apache
Software Foundation Press Release</a></p>
<p>Apache Grails is a powerful Apache Groovy-based web application framework
for the Java Virtual Machine (JVM) built on top of Spring Boot. It enables
rapid application development through convention-over-configuration and Don't
Repeat Yourself (DRY) principles, making it ideal for productively building
full-stack applications with simplicity. Similar to Ruby on Rails, Grails has a
nearly 20-year history of evolution and refinement, built on Java Enterprise
foundations like Spring Frame [...]
@@ -76,7 +76,7 @@ Special thanks to:</p>
<h3>Resources</h3>
<ul>
<li><a href="https://grails.apache.org/">Website</a></li>
-<li><a href="https://docs.grails.org/latest/">Documentation</a></li>
+<li><a href="https://grails.apache.org/docs/latest/">Documentation</a></li>
<li><a href="https://github.com/apache/grails-core">GitHub</a></li>
<li><a
href="https://lists.apache.org/[email protected]">Developer
Mailing List</a></li>
<li><a href="https://lists.apache.org/[email protected]">Users
Mailing List</a></li>
@@ -164,7 +164,7 @@ We encourage you to try this pre-release version and
provide your feedback <a hr
<li>chore: correct wording for the voting window @matrei (#14954)</li>
</ul>
<p>Full Changelog: <a
href="https://github.com/apache/grails-core/compare/v7.0.0-RC1...v7.0.0-RC2">v7.0.0-RC1...v7.0.0-RC2</a></p>
-<p>Upgrade instructions are available in the <a
href="https://docs.grails.org/7.0.0-RC2/guide/upgrading.html#upgrading60x">documentation</a>.</p>
+<p>Upgrade instructions are available in the <a
href="https://grails.apache.org/docs/7.0.0-RC2/guide/upgrading.html#upgrading60x">documentation</a>.</p>
<h2>Additional Releases</h2>
<p>The following plugins and tools are being released alongside Grails
7.0.0-RC2:</p>
<h3>Grails Spring Security 7.0.0-RC2</h3>
@@ -195,13 +195,13 @@ The actions being released are used in gradle projects
for their release workflo
<li>Asset Pipeline 5.0.16 (now cloud.wondrify.asset-pipeline)</li>
<li>Spring Framework 6.2.10</li>
<li>Spring Boot 3.5.5</li>
-<li>See all in the <a
href="https://docs.grails.org/7.0.0-RC2/ref/Versions/Grails%20BOM.html">grails-bom</a>.</li>
+<li>See all in the <a
href="https://grails.apache.org/docs/7.0.0-RC2/ref/Versions/Grails%20BOM.html">grails-bom</a>.</li>
</ul>
<h2>Generating a new Grails 7.0.0-RC2 application with Grails Forge</h2>
<p>Try out Grails today by visiting our online application generator <a
href="https://start.grails.org">Grails Forge</a>. This is the quickest and the
recommended way to get started with Grails.</p>
<p>After installing JetBrains' IntelliJ IDEA 2025.2 or later and the <a
href="https://plugins.jetbrains.com/plugin/18504-grails">Grails Plugin</a>, the
Grails Application Forge will also be available under New Project in IntelliJ
IDEA.</p>
<p>Within your newly generated project you can access the Grails CLIs with the
Grails Wrapper.</p>
-<p>See the <a
href="https://docs.grails.org/7.0.0-RC2/guide/gettingStarted.html#_types_of_command_line_interface_cli">Types
of CLI</a> section in the documentation for details on each CLI.</p>
+<p>See the <a
href="https://grails.apache.org/docs/7.0.0-RC2/guide/gettingStarted.html#_types_of_command_line_interface_cli">Types
of CLI</a> section in the documentation for details on each CLI.</p>
<p>grail-shell-cli</p>
<pre><code class="language-shell">grailsw
</code></pre>
@@ -210,7 +210,7 @@ The actions being released are used in gradle projects for
their release workflo
</code></pre>
<h2>Installing Grails CLIs 7.0.0-RC2 with SDKMan</h2>
<p>Alternatively, you can quickly install Grails 7.0.0-RC2 CLIs
(grails-shell-cli and grails-forge-cli) using <a
href="https://sdkman.io">SDKMan</a>.</p>
-<p>See the <a
href="https://docs.grails.org/7.0.0-RC2/guide/gettingStarted.html#_types_of_command_line_interface_cli">Types
of CLI</a> section in the documentation for details on each CLI.</p>
+<p>See the <a
href="https://grails.apache.org/docs/7.0.0-RC2/guide/gettingStarted.html#_types_of_command_line_interface_cli">Types
of CLI</a> section in the documentation for details on each CLI.</p>
<ol>
<li>
<p>If you don't have SDKMan installed, follow the instructions at <a
href="https://sdkman.io/install">SDKMan Installation Guide</a> to set it up.</p>
@@ -251,7 +251,7 @@ The actions being released are used in gradle projects for
their release workflo
</li>
<li>
<p>Make any necessary adjustments to your application code, configuration, and
dependencies to ensure compatibility with
-the new version. <a
href="https://docs.grails.org/7.0.0-RC2/guide/upgrading.html#upgrading60x">See
Upgrade Guide</a></p>
+the new version. <a
href="https://grails.apache.org/docs/7.0.0-RC2/guide/upgrading.html#upgrading60x">See
Upgrade Guide</a></p>
<ul>
<li>remove <code>org.apache.grails:grails-i18n</code> from your dependency
list, it has changed to <code>org.apache.grails.i18n:grails-i18n</code> and is
provided transitively by default</li>
</ul>
@@ -397,7 +397,7 @@ We encourage you to try this pre-release version and
provide your feedback <a hr
<li>fix: #13705 - revert changes to Metadata from micronaut removal
@jdaugherty (#14897)</li>
</ul>
<p>Full Changelog: <a
href="https://github.com/apache/grails-core/compare/v7.0.0-M5...v7.0.0-RC1">v7.0.0-M5...v7.0.0-RC1</a></p>
-<p>Upgrade instructions are available in the <a
href="https://docs.grails.org/7.0.0-RC1/guide/upgrading.html#upgrading60x">documentation</a>.</p>
+<p>Upgrade instructions are available in the <a
href="https://grails.apache.org/docs/7.0.0-RC1/guide/upgrading.html#upgrading60x">documentation</a>.</p>
<h2>Dependency Upgrades</h2>
<p>In this release, we've upgraded several dependency versions, including but
not limited to the following:</p>
<ul>
@@ -406,13 +406,13 @@ We encourage you to try this pre-release version and
provide your feedback <a hr
<li>Spring Framework 6.2.9</li>
<li>Spring Boot 3.5.4</li>
<li>Gradle 8.14.3</li>
-<li>See all in the <a
href="https://docs.grails.org/7.0.0-RC1/ref/Versions/Grails%20BOM.html">grails-bom</a>.</li>
+<li>See all in the <a
href="https://grails.apache.org/docs/7.0.0-RC1/ref/Versions/Grails%20BOM.html">grails-bom</a>.</li>
</ul>
<h2>Generating a new Grails 7.0.0-RC1 application with Grails Forge</h2>
<p>Try out Grails today by visiting our online application generator <a
href="https://start.grails.org">Grails Forge</a>. This is the quickest and the
recommended way to get started with Grails.</p>
<p>After installing JetBrains' IntelliJ IDEA 2025.2 or later and the <a
href="https://plugins.jetbrains.com/plugin/18504-grails">Grails Plugin</a>, the
Grails Application Forge will also be available under New Project in IntelliJ
IDEA.</p>
<p>Within your newly generated project you can access the Grails CLIs with the
Grails Wrapper.</p>
-<p>See the <a
href="https://docs.grails.org/7.0.0-RC1/guide/gettingStarted.html#_types_of_command_line_interface_cli">Types
of CLI</a> section in the documentation for details on each CLI.</p>
+<p>See the <a
href="https://grails.apache.org/docs/7.0.0-RC1/guide/gettingStarted.html#_types_of_command_line_interface_cli">Types
of CLI</a> section in the documentation for details on each CLI.</p>
<p>grail-shell-cli</p>
<pre><code class="language-shell">grailsw
</code></pre>
@@ -421,7 +421,7 @@ We encourage you to try this pre-release version and
provide your feedback <a hr
</code></pre>
<h2>Installing Grails CLIs 7.0.0-RC1 with SDKMan</h2>
<p>Alternatively, you can quickly install Grails 7.0.0-RC1 CLIs
(grails-shell-cli and grails-forge-cli) using <a
href="https://sdkman.io">SDKMan</a>.</p>
-<p>See the <a
href="https://docs.grails.org/7.0.0-RC1/guide/gettingStarted.html#_types_of_command_line_interface_cli">Types
of CLI</a> section in the documentation for details on each CLI.</p>
+<p>See the <a
href="https://grails.apache.org/docs/7.0.0-RC1/guide/gettingStarted.html#_types_of_command_line_interface_cli">Types
of CLI</a> section in the documentation for details on each CLI.</p>
<ol>
<li>
<p>If you don't have SDKMan installed, follow the instructions at <a
href="https://sdkman.io/install">SDKMan Installation Guide</a> to set it up.</p>
@@ -462,7 +462,7 @@ We encourage you to try this pre-release version and
provide your feedback <a hr
</li>
<li>
<p>Make any necessary adjustments to your application code, configuration, and
dependencies to ensure compatibility with
-the new version. <a
href="https://docs.grails.org/7.0.0-RC1/guide/upgrading.html#upgrading60x">See
Upgrade Guide</a></p>
+the new version. <a
href="https://grails.apache.org/docs/7.0.0-RC1/guide/upgrading.html#upgrading60x">See
Upgrade Guide</a></p>
</li>
</ol>
<p>Normally, Grails Core dependencies are automatically updated using the
Grails Bill of Materials (BOM). However, if you
@@ -607,7 +607,7 @@ We encourage you to try this pre-release version and
provide your feedback <a hr
<li>#14316 Use local repo commands instead of the github api for Release Drop
Down population by @JudeRV in #14834</li>
</ul>
<p>Full Changelog: <a
href="https://github.com/apache/grails-core/compare/v7.0.0-M4...v7.0.0-M5">v7.0.0-M4...v7.0.0-M5</a></p>
-<p>Upgrade instructions are available in the <a
href="https://docs.grails.org/7.0.0-M5/guide/upgrading.html#upgrading60x">documentation</a>.</p>
+<p>Upgrade instructions are available in the <a
href="https://grails.apache.org/docs/7.0.0-M5/guide/upgrading.html#upgrading60x">documentation</a>.</p>
<h2>Dependency Upgrades</h2>
<p>In this release, we've upgraded several dependency versions, including but
not limited to the following:</p>
<ul>
@@ -616,13 +616,13 @@ We encourage you to try this pre-release version and
provide your feedback <a hr
<li>Spring Framework 6.2.8</li>
<li>Spring Boot 3.5.3</li>
<li>Gradle 8.14.2</li>
-<li>See all in the <a
href="https://docs.grails.org/7.0.0-M5/ref/Versions/Grails%20BOM.html">grails-bom</a>.</li>
+<li>See all in the <a
href="https://grails.apache.org/docs/7.0.0-M5/ref/Versions/Grails%20BOM.html">grails-bom</a>.</li>
</ul>
<h2>Generating a new Grails 7.0.0-M5 application with Grails Forge</h2>
<p>Try out Grails today by visiting our online application generator <a
href="https://start.grails.org/">Grails Forge</a>. This is the quickest and
the recommended way to get started with Grails.</p>
<p>After installing the JetBrains' IntelliJ IDEA <a
href="https://plugins.jetbrains.com/plugin/18504-grails">Grails Plugin</a>, the
Grails Application Forge will also be available under New Project in IntelliJ
IDEA.</p>
<p>Within your newly generated project you can access the Grails CLIs with the
grails wrapper</p>
-<p>See <a
href="https://docs.grails.org/7.0.0-M5/guide/gettingStarted.html#downloadingAndInstalling">Types
of CLI</a> for details on each CLI</p>
+<p>See <a
href="https://grails.apache.org/docs/7.0.0-M5/guide/gettingStarted.html#downloadingAndInstalling">Types
of CLI</a> for details on each CLI</p>
<p>grail-shell-cli</p>
<pre><code class="language-shell">grailsw
</code></pre>
@@ -631,7 +631,7 @@ We encourage you to try this pre-release version and
provide your feedback <a hr
</code></pre>
<h2>Installing Grails CLIs 7.0.0-M5 with SDKMan</h2>
<p>Alternatively, you can quickly install Grails 7.0.0-M5 CLIs
(grails-shell-cli and grails-forge-cli) using <a
href="https://sdkman.io/">SDKMan</a>.</p>
-<p>See <a
href="https://docs.grails.org/7.0.0-M5/guide/gettingStarted.html#downloadingAndInstalling">Types
of CLI</a> for details on each CLI</p>
+<p>See <a
href="https://grails.apache.org/docs/7.0.0-M5/guide/gettingStarted.html#downloadingAndInstalling">Types
of CLI</a> for details on each CLI</p>
<ol>
<li>
<p>If you don't have SDKMan installed, follow the instructions at <a
href="https://sdkman.io/install/">SDKMan Installation Guide</a>
@@ -673,7 +673,7 @@ to set it up.</p>
</li>
<li>
<p>Make any necessary adjustments to your application code, configuration, and
dependencies to ensure compatibility with
-the new version. <a
href="https://docs.grails.org/7.0.0-M5/guide/upgrading.html#upgrading60x">See
Upgrade Guide</a></p>
+the new version. <a
href="https://grails.apache.org/docs/7.0.0-M5/guide/upgrading.html#upgrading60x">See
Upgrade Guide</a></p>
</li>
</ol>
<p>Normally, Grails Core dependencies are automatically updated using the
Grails Bill of Materials (BOM). However, if you
@@ -833,7 +833,7 @@ meaning anyone can view your information. Make sure your
email client does not a
<li>Addition of NOTICE to Grails Source</li>
<li>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.</li>
</ul>
-<p>Upgrade instructions are available in the <a
href="https://docs.grails.org/7.0.0-M4/guide/upgrading.html#upgrading60x">documentation</a>.</p>
+<p>Upgrade instructions are available in the <a
href="https://grails.apache.org/docs/7.0.0-M4/guide/upgrading.html#upgrading60x">documentation</a>.</p>
<h2>Dependency Upgrades</h2>
<p>In this release, we've upgraded several dependency versions, including but
not limited to the following:</p>
<ul>
@@ -843,7 +843,7 @@ meaning anyone can view your information. Make sure your
email client does not a
<li>Spring Boot 3.5.0</li>
<li>Gradle 8.14</li>
<li>Spock 2.3-groovy-4.0</li>
-<li>See all in the <a
href="https://docs.grails.org/7.0.0-M4/ref/Versions/Grails%20BOM.html">grails-bom</a>.</li>
+<li>See all in the <a
href="https://grails.apache.org/docs/7.0.0-M4/ref/Versions/Grails%20BOM.html">grails-bom</a>.</li>
</ul>
<h2>Installing Grails 7.0.0-M4</h2>
<p>Try out Grails 7.0.0-M4 today by visiting the online app creator * <a
href="https://start.grails.org/">Grails Forge</a>.
@@ -883,7 +883,7 @@ groovy.version=4.0.27
</li>
<li>
<p>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/upgrading.html#upgrading60x.</p>
+the new version. See
https://grails.apache.org/docs/7.0.0-M4/guide/upgrading.html#upgrading60x.</p>
</li>
</ol>
<p>Normally, Grails Core dependencies are automatically updated using the
Grails Bill of Materials (BOM). However, if you
@@ -1165,7 +1165,7 @@ grailsGradlePluginVersion=7.0.0-M4
</li>
<li>
<p>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-M3/guide/upgrading.html#upgrading60x.</p>
+the new version. See
https://grails.apache.org/docs/7.0.0-M3/guide/upgrading.html#upgrading60x.</p>
</li>
</ol>
<p>Normally, Grails Core dependencies are automatically updated using the
Grails Bill of Materials (BOM). However, if you
@@ -1514,7 +1514,7 @@ grailsGradlePluginVersion=7.0.0-M3
</code></pre>
</li>
<li>
-<p>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-M1/guide/upgrading.html#upgrading60x.</p>
+<p>Make any necessary adjustments to your application code, configuration, and
dependencies to ensure compatibility with the new version. See
https://grails.apache.org/docs/7.0.0-M1/guide/upgrading.html#upgrading60x.</p>
</li>
</ol>
<p>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-M1.</p>
@@ -2249,7 +2249,7 @@ sdk use grails dev
<h2>Join the Grails Community: A Collective Journey</h2>
<p>At the heart of Grails lies its vibrant and passionate community of
developers, whose contributions play a pivotal role in shaping the framework's
evolution. Community contributions not only enhance the feature set of Grails
but also address bugs, provide valuable feedback, and share best practices. The
active involvement of the community fosters a collaborative environment where
ideas are shared, discussed, and refined, ultimately benefiting all Grails
users. With Grails 6, we encour [...]
<p>In conclusion, Grails 6 represents a significant advancement in web
development, providing developers with a powerful platform to build exceptional
applications. Embrace Grails 6 and its advancements in Java, Spring, Spring
Boot, and Micronaut integration to unlock the full potential of modern web
development and embark on an exciting journey towards creating innovative and
scalable applications.</p>
-<p>To download and get started with Grails 6, visit the official Grails
documentation: <a
href="https://docs.grails.org/latest/guide/gettingStarted.html#downloadingAndInstalling">docs.grails.org/latest/guide/gettingStarted.html#downloadingAndInstalling</a>.</p>
+<p>To download and get started with Grails 6, visit the official Grails
documentation: <a
href="https://grails.apache.org/docs/latest/guide/gettingStarted.html#downloadingAndInstalling">https://grails.apache.org/docs/latest/guide/gettingStarted.html#downloadingAndInstalling</a>.</p>
<p><strong>Happy Coding with Grails
6!</strong></p>]]></description><author>Puneet
Behl</author><guid>2023-07-25-introducing-grails-6</guid><pubDate>Tue, 25 Jul
2023 00:00:00 GMT</pubDate></item><item><title>Grails 6 RC1 - Release
Announcement</title><link>https://grails.apache.org/blog/2023-05-27-grails-6-rc1.html</link><description><![CDATA[</p>
<p>The Grails Foundation is pleased to announce the release of Grails 6 RC1!
We encourage you to update your applications to this release.</p>
<p>The <a
href="https://github.com/apache/grails-core/releases/tag/v6.0.0-RC1">Grails
6.0.0-RC1 Release</a> provides an easy upgrade path to the developers, or
project managers who are looking to upgrade to Java 17, and Spring 6.</p>
@@ -2324,7 +2324,7 @@ sdk use grails dev
</li>
</ul>
<p>Starting with Grails 6, there will not be a Grails CLI wrapper in new
projects. Many of the commands offered by the legacy CLI can be run directly
from Gradle. For example, <code>./grailsw run-app</code> can be achieved with
<code>./gradlew bootRun</code>. For commands that alter the files of a Grails
project like <code>create-controller</code>, you will be able to use the
globally-installed Grails CLI from within the project folder.</p>
-<p>There are some specific commands which are supported via plugins that may
not work with the New CLI, these commands are written as Groovy scripts and
need to be converted to Grails ApplicationCommand which would make them
available as Gradle tasks. You can find more information in the Grails
Documentation about <a
href="https://docs.grails.org/latest/guide/commandLine.html#creatingCustomCommands">creating
custom commands</a>. Alternatively, we can rewrite commands in the New Grails
CL [...]
+<p>There are some specific commands which are supported via plugins that may
not work with the New CLI, these commands are written as Groovy scripts and
need to be converted to Grails ApplicationCommand which would make them
available as Gradle tasks. You can find more information in the Grails
Documentation about <a
href="https://grails.apache.org/docs/latest/guide/commandLine.html#creatingCustomCommands">creating
custom commands</a>. Alternatively, we can rewrite commands in the New Gr [...]
<h2>Installation</h2>
<h3>Installing with SDKMan</h3>
<p>The easiest way to install new Grails CLI is with <a
href="https://sdkman.io">SDKMan</a>, run the following command:</p>
@@ -2363,7 +2363,7 @@ sdk use grails dev
</ul>
<p>We will soon add support for REST API Plugin, ReactJS and AngularJS
application types.</p>
<h2>The Grails Scaffolding Plugin</h2>
-<p>The Grails Scaffolding plugin, which defines commands such as generate-all
and generate-controller, will not work because it uses the command scripts. In
Grails 3, we introduced the concept of an ApplicationCommand which has similar
abilities as scripts in regards to retrieving arguments, template generation,
file access, and model building. For more information, please read the Grails
documentation for <a
href="https://docs.grails.org/latest/guide/commandLine.html#creatingCustomComma
[...]
+<p>The Grails Scaffolding plugin, which defines commands such as generate-all
and generate-controller, will not work because it uses the command scripts. In
Grails 3, we introduced the concept of an ApplicationCommand which has similar
abilities as scripts in regards to retrieving arguments, template generation,
file access, and model building. For more information, please read the Grails
documentation for <a
href="https://grails.apache.org/docs/latest/guide/commandLine.html#creatingCust
[...]
<h2>Why should you upgrade to Grails 6?</h2>
<ul>
<li>With the future release of Grails 7, we are planning a move to Java 17 as
a baseline, so Grails 6 provides an easy upgrade path to users or applications
who are planning to move to Java 17.</li>
@@ -2448,7 +2448,7 @@ Moving the Grails Foundation under Unity provides a
meaningful alliance between
<p>This can occur when manually calling <strong>bindData</strong> (or one of
several variants) given the conditions above. Under particular additional
conditions, controller actions that automatically bind request data to (nested)
command objects may cause static properties to change.</p>
<h2>The constraints property</h2>
<p>One common property that represents an important part of the functionality
in the Grails framework is the <strong>constraints</strong> property. The
<strong>constraints</strong> property allows classes that implement the
<strong>Validateable</strong> trait to check that the data in an instance of
the class is valid. It is also a static property that could be overwritten due
to this bug, potentially leading to data corruption. Because of this
possibility, we feel it is important for [...]
-<p>For more information about data validation functionality available in the
Grails framework, please see the <a
href="https://docs.grails.org/5.2.4/guide/validation.html">documentation</a>.</p>
+<p>For more information about data validation functionality available in the
Grails framework, please see the <a
href="https://grails.apache.org/docs/5.2.4/guide/validation.html">documentation</a>.</p>
<h2>Resolution</h2>
<p>The Grails Team recommends that all Grails applications be upgraded to a
patched Grails release. Grails 4.x applications can be upgraded to version
4.1.2 or higher, and Grails 5.x applications can be upgraded to 5.2.3 or
higher.</p>
<p>We have released a patched version of Grails 3 for this bug. Grails 3.x
applications can be upgraded to version 3.3.16.</p>
@@ -2476,7 +2476,7 @@ Moving the Grails Foundation under Unity provides a
meaningful alliance between
<p>Updated impacted Grails framework versions.</p>
<h2>Overview</h2>
<p>The Grails team has confirmed a critical security vulnerability reported by
meizjm3i and codeplutos of AntGroup FG Security Lab. This vulnerability has
been assigned identifier <a
href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-35912">CVE-2022-35912</a>.</p>
-<p>The vulnerability allows an attacker to remotely execute code within a
Grails application runtime by issuing a specially crafted web request that
grants the attacker access to the class loader. This attack exploits a section
of the Grails data-binding logic. Grails data-binding is invoked in a number
of ways including the creation of command objects, domain class construction,
and manual data binding when using <code>bindData</code>. For a full
description, please refer to <a href=" [...]
+<p>The vulnerability allows an attacker to remotely execute code within a
Grails application runtime by issuing a specially crafted web request that
grants the attacker access to the class loader. This attack exploits a section
of the Grails data-binding logic. Grails data-binding is invoked in a number
of ways including the creation of command objects, domain class construction,
and manual data binding when using <code>bindData</code>. For a full
description, please refer to <a href=" [...]
<h2>Impacted Applications</h2>
<ul>
<li>Grails framework versions
@@ -3358,7 +3358,7 @@ David has contributed to so many plugins over the years,
he has lost count! Whic
</ul>
<p>In addition, <a href="https://micronaut.io/"
title="Micronaut">Micronaut</a> is now included as part of the Grails framework
as the parent ApplicationContext, allowing any Micronaut feature, whether it be
the declarative HTTP client or the Kafka client, to be used within a Grails 4
application. In fact the <a
href="https://docs.micronaut.io/latest/guide/index.html#httpClient">Micronaut
HTTP client</a> is now considered the supported HTTP client for use within
Grails applications.</p>
<p>Startup time and memory consumption have also been optimized and improved
significantly over previous releases, thanks to changes in both Spring Boot 2.1
and also the migration of some of the Grails framework's internal
infrastructure wiring to Micronaut.</p>
-<p>Many Grails plugins have been verified as working with Grails 4. For those
within the Grails plugin community, now is the time to upgrade your plugins and
verify they continue to work with Grails 4. As this is a new major version, <a
href="https://docs.grails.org/4.0.x/guide/upgrading.html">API changes have been
made</a>, as well as changes within Spring Boot, Groovy, and Hibernate that may
require changes to work with Grails 4. Please read the <a
href="https://docs.grails.org/4.0.x/g [...]
+<p>Many Grails plugins have been verified as working with Grails 4. For those
within the Grails plugin community, now is the time to upgrade your plugins and
verify they continue to work with Grails 4. As this is a new major version, <a
href="https://grails.apache.org/docs/4.0.x/guide/upgrading.html">API changes
have been made</a>, as well as changes within Spring Boot, Groovy, and
Hibernate that may require changes to work with Grails 4. Please read the <a
href="https://grails.apache.or [...]
<p>Thanks to all those who contributed to the release, and if you haven't
already, do sign up for <a
href="https://objectcomputing.com/products/micronaut/community/something-big-is-coming">next
week's webinar</a> where we have more exciting announcements related to the
Grails framework and Micronaut planned.</p>]]></description><author>Graeme
Rocher</author><guid>2019-07-11</guid><pubDate>Thu, 11 Jul 2019 00:00:00
GMT</pubDate></item><item><title>Webinar: Using Apache Groovy for Data Sci [...]
<p>Tags: <a href="https://grails.apache.org/blog/tag/webinar.html"><span
class="hashtag">#webinar</span></a> <a
href="https://grails.apache.org/blog/tag/groovy.html"><span
class="hashtag">#groovy</span></a></p>
<p>Apache Groovy is a multi-faceted, multi-paradigm programming language for
the JVM that offers a wealth of features that make it ideal for transforming
big data into usable solutions.</p>
@@ -3427,7 +3427,7 @@ David has contributed to so many plugins over the years,
he has lost count! Whic
</ul>
<p>In addition, <a href="https://micronaut.io/"
title="Micronaut">Micronaut</a> is now included as part of the Grails framework
as the parent ApplicationContext, allowing any Micronaut feature, whether it be
the declarative HTTP client or the Kafka client, to be used within a Grails 4
application.</p>
<p>Startup time and memory consumption have also been optimized and improved
significantly over previous releases, thanks to changes in both Spring Boot 2.1
and also the migration of some of the Grails framework's internal
infrastructure wiring to Micronaut.</p>
-<p>Many Grails plugins have been verified as working with Grails 4, and for
those within the Grails plugin community, now is the time to upgrade your
plugins and verify the plugins continue to work with Grails 4. As this is a new
major version, <a href="https://docs.grails.org/4.0.x/guide/upgrading.html">API
changes have been made</a>, as well as changes within Spring Boot, Groovy, and
Hibernate that may require changes to work with Grails 4. Please read the <a
href="https://docs.grails. [...]
+<p>Many Grails plugins have been verified as working with Grails 4, and for
those within the Grails plugin community, now is the time to upgrade your
plugins and verify the plugins continue to work with Grails 4. As this is a new
major version, <a
href="https://grails.apache.org/docs/4.0.x/guide/upgrading.html">API changes
have been made</a>, as well as changes within Spring Boot, Groovy, and
Hibernate that may require changes to work with Grails 4. Please read the <a
href="https://grail [...]
<p>Thanks to all those who contributed to the release, and we look forward to
your feedback and to seeing you at Devnexus
2019.</p>]]></description><author>Graeme
Rocher</author><guid>2019-02-19</guid><pubDate>Tue, 19 Feb 2019 00:00:00
GMT</pubDate></item><item><title>Quickcast #12: Building Grails® Applications
with
Gradle</title><link>https://grails.apache.org/blog/2019-01-30.html</link><description><![CDATA[</p>
<p>Tags: <a href="https://grails.apache.org/blog/tag/quickcast.html"><span
class="hashtag">#quickcast</span></a></p>
<p>In this Grails<sup>®</sup> Quickcast, 2GM (Groovy, Grails framework, and
Micronaut) team member, <a
href="https://objectcomputing.com/products/2gm-team#caballero">Sergio del
Amo</a>, explores Grails integration with the Gradle build tool.</p>
@@ -3555,15 +3555,15 @@ class Team {
<li>2.14.1.1 for Grails 2.x</li>
<li>2.15.1 for Grails 3 and Java 7</li>
<li>3.0.6 for Grails 3 and Java 8</li>
-</ul>]]></description><author>Iván
López</author><guid>2018-09-23</guid><pubDate>Sun, 23 Sep 2018 00:00:00
GMT</pubDate></item><item><title>Quickcast #11: Grails® Profiling with
YourKit</title><link>https://grails.apache.org/blog/2018-08-22-2.html</link><description><![CDATA[</p>
-<p>Tags: <a href="https://grails.apache.org/blog/tag/quickcast.html"><span
class="hashtag">#quickcast</span></a> <a
href="https://grails.apache.org/blog/tag/yourkit.html"><span
class="hashtag">#yourkit</span></a></p>
-<p>In this Quickcast, 2GM (Groovy, Grails<sup>®</sup> framework, and
Micronaut) team member, <a
href="https://objectcomputing.com/products/2gm-team#assar">Nirav Assar</a>,
demonstrates how to use YourKit to profile a Grails application and spot CPU
problems and heap and garbage collection issues.</p>
-<p>Grails Quickcasts, brought to you through a partnership between <a
href="https://objectcomputing.com/">Object Computing, Inc.</a> (OCI) and <a
href="https://dzone.com/">DZone</a>, provide bite-sized tutorials to help you
maximize your productivity with the Framework.</p>
-<iframe width="100%" height="560"
src="https://www.youtube-nocookie.com/embed/NJ_T5g4bBeY"
frameborder="0"></iframe>]]></description><author>Nirav
Assar</author><guid>2018-08-22-2</guid><pubDate>Wed, 22 Aug 2018 00:00:00
GMT</pubDate></item><item><title>Quickcast #10: Debugging Grails®
Apps</title><link>https://grails.apache.org/blog/2018-08-22-1.html</link><description><![CDATA[</p>
+</ul>]]></description><author>Iván
López</author><guid>2018-09-23</guid><pubDate>Sun, 23 Sep 2018 00:00:00
GMT</pubDate></item><item><title>Quickcast #10: Debugging Grails®
Apps</title><link>https://grails.apache.org/blog/2018-08-22-1.html</link><description><![CDATA[</p>
<p>Tags: <a href="https://grails.apache.org/blog/tag/quickcast.html"><span
class="hashtag">#quickcast</span></a></p>
<p>In this 13-minute Quickcast, 2GM (Groovy, Grails<sup>®</sup> framework, and
Micronaut) team member, <a
href="https://objectcomputing.com/products/2gm-team#lopez">Iván López</a>,
demonstrates a variety of ways to debug Grails core code and the Grails CLI
(command line interface). Developers may use these tips to fix issues or
contribute enhancements to the core Grails framework.</p>
<p>Grails Quickcasts, brought to you through a partnership between <a
href="https://objectcomputing.com/">Object Computing, Inc.</a> (OCI) and <a
href="https://dzone.com/">DZone</a>, provide bite-sized tutorials to help you
maximize your productivity with the Framework.</p>
-<iframe width="100%" height="560"
src="https://www.youtube-nocookie.com/embed/y69Cr_hYUCA"
frameborder="0"></iframe>]]></description><author>Iván
López</author><guid>2018-08-22-1</guid><pubDate>Wed, 22 Aug 2018 00:00:00
GMT</pubDate></item><item><title>Mock vs Stub vs
Spy</title><link>https://grails.apache.org/blog/2018-06-22.html</link><description><![CDATA[</p>
+<iframe width="100%" height="560"
src="https://www.youtube-nocookie.com/embed/y69Cr_hYUCA"
frameborder="0"></iframe>]]></description><author>Iván
López</author><guid>2018-08-22-1</guid><pubDate>Wed, 22 Aug 2018 00:00:00
GMT</pubDate></item><item><title>Quickcast #11: Grails® Profiling with
YourKit</title><link>https://grails.apache.org/blog/2018-08-22-2.html</link><description><![CDATA[</p>
+<p>Tags: <a href="https://grails.apache.org/blog/tag/quickcast.html"><span
class="hashtag">#quickcast</span></a> <a
href="https://grails.apache.org/blog/tag/yourkit.html"><span
class="hashtag">#yourkit</span></a></p>
+<p>In this Quickcast, 2GM (Groovy, Grails<sup>®</sup> framework, and
Micronaut) team member, <a
href="https://objectcomputing.com/products/2gm-team#assar">Nirav Assar</a>,
demonstrates how to use YourKit to profile a Grails application and spot CPU
problems and heap and garbage collection issues.</p>
+<p>Grails Quickcasts, brought to you through a partnership between <a
href="https://objectcomputing.com/">Object Computing, Inc.</a> (OCI) and <a
href="https://dzone.com/">DZone</a>, provide bite-sized tutorials to help you
maximize your productivity with the Framework.</p>
+<iframe width="100%" height="560"
src="https://www.youtube-nocookie.com/embed/NJ_T5g4bBeY"
frameborder="0"></iframe>]]></description><author>Nirav
Assar</author><guid>2018-08-22-2</guid><pubDate>Wed, 22 Aug 2018 00:00:00
GMT</pubDate></item><item><title>Mock vs Stub vs
Spy</title><link>https://grails.apache.org/blog/2018-06-22.html</link><description><![CDATA[</p>
<p>Tags: <a href="https://grails.apache.org/blog/tag/spock.html"><span
class="hashtag">#spock</span></a></p>
<h2>Introduction</h2>
<p><a href="https://spockframework.org/">Spock</a> provides three powerful yet
distinct, tools that make working with collaborators easier:</p>
@@ -3888,7 +3888,7 @@ Moreover, it changes the method implementation to return
a different String.
<p>If you want to avoid runtime proxies, I would suggest you take a look at <a
href="https://micronaut.io/">Micronaut</a>. :)</p>
<p><a
href="https://objectcomputing.com/files/7815/2933/9902/180615_Grails_Code_Webinar_slidedeck.pdf">Slides</a></p>
<iframe width="100%" height="560"
src="https://www.youtube-nocookie.com/embed/lZX_lL7cxHE"
frameborder="0"></iframe>]]></description><author>Iván
López</author><guid>2018-06-15</guid><pubDate>Fri, 15 Jun 2018 00:00:00
GMT</pubDate></item><item><title>Grails® Mock
Logging</title><link>https://grails.apache.org/blog/2018-05-24.html</link><description><![CDATA[</p>
-<p>In Grails<sup>®</sup> 3 applications, logging is handled by the <a
href="https://docs.grails.org/latest/guide/conf.html#logging">Logback logging
framework</a>. Grails artifacts are configured with logging out of the box. The
developer simply invokes <code>log.info("log whatever")</code> and it
works. But how do we create unit tests that assert that logs occur with the
appropriate level?</p>
+<p>In Grails<sup>®</sup> 3 applications, logging is handled by the <a
href="https://grails.apache.org/docs/latest/guide/conf.html#logging">Logback
logging framework</a>. Grails artifacts are configured with logging out of the
box. The developer simply invokes <code>log.info("log
whatever")</code> and it works. But how do we create unit tests that
assert that logs occur with the appropriate level?</p>
<p>This blog will highlight some mock logging techniques and when to use
them.</p>
<h2>Default Grails Logging in Unit Tests</h2>
<p>First let's get the obvious out of the way for clarity. If you are not
concerned about testing how logs operate in your application, there is no
reason to worry about mocking loggers in Grails apps.</p>
@@ -4401,7 +4401,7 @@ manually cleanup in functional
tests.</p>]]></description><author>Sergio Del Amo
<p><strong>Congratulations to Eric, Graeme, and Jeff for these well deserved
awards.</strong></p>
<p><img src="2017-11-30-img01.png" alt="Eric Helgeson, Graeme Rocher, and Jeff
Scott Brown were honored at G3 Summit 2017 for their contributions to the
Grails framework." /></p>]]></description><author>Sergio Del Amo
Caballero</author><guid>2017-11-30</guid><pubDate>Thu, 30 Nov 2017 00:00:00
GMT</pubDate></item><item><title>Grails® React
Profiles</title><link>https://grails.apache.org/blog/2017-11-21.html</link><description><![CDATA[</p>
<p>Tags: <a href="https://grails.apache.org/blog/tag/react.html"><span
class="hashtag">#react</span></a></p>
-<p>As of Grails<sup>®</sup> 3.3.2, there are now two distinct <a
href="https://docs.grails.org/latest/guide/profiles.html">Profiles</a> for
using <a href="https://reactjs.org/">React</a> in your Grails projects. These
profiles are essentially the same as those described in the <a
href="/blog/2017-11-21.html">announcement post</a>, with some updates.</p>
+<p>As of Grails<sup>®</sup> 3.3.2, there are now two distinct <a
href="https://grails.apache.org/docs/latest/guide/profiles.html">Profiles</a>
for using <a href="https://reactjs.org/">React</a> in your Grails projects.
These profiles are essentially the same as those described in the <a
href="/blog/2017-11-21.html">announcement post</a>, with some updates.</p>
<h2>React-Webpack Profile for Grails apps</h2>
<p>This profile provides a monolithic project structure with React code
embedded within the Grails project. Formerly, to use this version of the
profile you had to specific it's version explictly. Now, this profile can be
used when creating a new Grails 3.3.2 app like so:</p>
<pre><code>grails create-app myapp -profile react-weback
@@ -4455,12 +4455,12 @@ manually cleanup in functional
tests.</p>]]></description><author>Sergio Del Amo
<p>Grails Quickcasts, brought to you through a partnership between <a
href="https://objectcomputing.com/">Object Computing, Inc.</a> (OCI) and <a
href="https://dzone.com/">DZone</a>, provide bite-sized tutorials to help you
maximize your productivity with the Framework.</p>
<iframe width="100%" height="560"
src="https://www.youtube-nocookie.com/embed/JVLn7kWkjp0"
frameborder="0"></iframe>]]></description><author>Zachary
Klein</author><guid>2017-10-30</guid><pubDate>Mon, 30 Oct 2017 00:00:00
GMT</pubDate></item><item><title>Grails® 3.3 GA
Released</title><link>https://grails.apache.org/blog/2017-07-26.html</link><description><![CDATA[</p>
<p>Tags: <a href="https://grails.apache.org/blog/tag/release.html"><span
class="hashtag">#release</span></a></p>
-<p>Just in time for <a href="https://gr8conf.us/">Gr8Conf US</a>, the <a
href="https://objectcomputing.com/products/2gm-team">Grails<sup>®</sup>
team</a> at <a href="https://objectcomputing.com/">Object Computing, Inc.</a>
(OCI) is pleased to announce the release of <a
href="https://docs.grails.org/3.3.x/">Grails 3.3 GA</a>.</p>
+<p>Just in time for <a href="https://gr8conf.us/">Gr8Conf US</a>, the <a
href="https://objectcomputing.com/products/2gm-team">Grails<sup>®</sup>
team</a> at <a href="https://objectcomputing.com/">Object Computing, Inc.</a>
(OCI) is pleased to announce the release of <a
href="https://grails.apache.org/docs/3.3.x/">Grails 3.3 GA</a>.</p>
<p>Grails 3.3 includes a number of significant improvements, most notably to
GORM with GORM 6.1, which we <a href="/blog/2017-03-27.html">released
earlier</a> in order to gather feedback from Grails 3.2.x users.</p>
<p>GORM 6.1 includes some real breakthrough innovations, including <a
href="https://gorm.grails.org/6.1.x/hibernate/manual/index.html#dataServices">Data
Services</a> that allow you to define interfaces that are automatically
implemented and work seamlessly with GORM's multi-tenancy features.</p>
<p>Other highlights of Grails 3.3 include the new <a
href="https://async.grails.org/latest/guide/index.html#events">EventBus</a>
abstraction which integrates with existing reactive libraries such as RxJava.
Events are also for the first time transaction aware so that consumers are only
notified if the surrounding transaction is successful, which simplifies code
greatly.</p>
<p>Overall there is an abundance of new features and improvements that
developers will be able to take advantage of, from the <a
href="https://testing.grails.org/">new testing framework</a> to improvemments
to <a href="https://views.grails.org/latest/">JSON Views</a>.</p>
-<p>All of these new features and more are covered in the <a
href="https://docs.grails.org/3.3.x/guide/introduction.html#whatsNew">What's
New guide</a>. Thanks to the Grails community who contributed greatly to making
the release a success and we look forward <a
href="https://github.com/apache/grails-core/issues">to your
feedback</a>!</p>]]></description><author>Graeme
Rocher</author><guid>2017-07-26</guid><pubDate>Wed, 26 Jul 2017 00:00:00
GMT</pubDate></item><item><title>Quickcast #7: L [...]
+<p>All of these new features and more are covered in the <a
href="https://grails.apache.org/docs/3.3.x/guide/introduction.html#whatsNew">What's
New guide</a>. Thanks to the Grails community who contributed greatly to
making the release a success and we look forward <a
href="https://github.com/apache/grails-core/issues">to your
feedback</a>!</p>]]></description><author>Graeme
Rocher</author><guid>2017-07-26</guid><pubDate>Wed, 26 Jul 2017 00:00:00
GMT</pubDate></item><item><title>Quickcas [...]
<p>Tags: <a href="https://grails.apache.org/blog/tag/quickcast.html"><span
class="hashtag">#quickcast</span></a></p>
<p>In this 20-minute video, 2GM (Groovy, Grails<sup>®</sup> framework, and
Micronaut) team member, <a
href="https://objectcomputing.com/products/2gm-team#caballero">Sergio del Amo
Caballero</a>, introduces several tips and tricks related to logging with a
Grails 3 application.</p>
<p>Sergio discusses changes to logger names in Grails 3.3 and things to bear
in mind when logging in Grails artifacts and Groovy POGOs.</p>
@@ -4468,7 +4468,7 @@ manually cleanup in functional
tests.</p>]]></description><author>Sergio Del Amo
<p>Grails Quickcasts, brought to you through a partnership between <a
href="https://objectcomputing.com/">Object Computing, Inc.</a> (OCI) and <a
href="https://dzone.com/">DZone</a>, provide bite-sized tutorials to help you
maximize your productivity with the Framework.</p>
<iframe width="100%" height="560"
src="https://www.youtube-nocookie.com/embed/3TppFy3lq1A"
frameborder="0"></iframe>]]></description><author>Sergio del Amo
Caballero</author><guid>2017-07-12</guid><pubDate>Wed, 12 Jul 2017 00:00:00
GMT</pubDate></item><item><title>Running a Grails® 3 App With a Self-Signed SSL
Certificate</title><link>https://grails.apache.org/blog/2017-06-28.html</link><description><![CDATA[</p>
<p>Tags: <a href="https://grails.apache.org/blog/tag/ssl.html"><span
class="hashtag">#ssl</span></a> <a
href="https://grails.apache.org/blog/tag/deployment.html"><span
class="hashtag">#deployment</span></a></p>
-<p>The <a
href="https://docs.grails.org/latest/ref/Command%20Line/run-app.html">Grails<sup>®</sup>
<em>run-app</em> command documentation</a> describes how to use the
<em>-https</em> flag to serve your app over HTTPS.</p>
+<p>The <a
href="https://grails.apache.org/docs/latest/ref/Command%20Line/run-app.html">Grails<sup>®</sup>
<em>run-app</em> command documentation</a> describes how to use the
<em>-https</em> flag to serve your app over HTTPS.</p>
<blockquote>
<p>https - Start an HTTPS server (on port 8443 by default) alongside the main
server. Just to be clear, the application will be accessible via HTTPS and
HTTP. A self-signed key will be generated. Intended for development use
only.</p>
</blockquote>
@@ -4914,29 +4914,29 @@ info.app.grailsVersion=3.2.5
<p>GORM 6.1 will become the default version of GORM to be used in the upcoming
Grails 3.3, in the meantime you can use GORM 6.1 in Grails 3.2 simply by
changing the <code>gormVersion</code> setting in
<code>gradle.properties</code>:</p>
<pre><code class="language-groovy">gormVersion=6.1.0.RELEASE
</code></pre>
-<p>To celebrate the release we have prepared the first of a series of new
guides to cover GORM 6.1. Among the many new features are huge improvements to
support Neo4j. Using the official Neo4j sample application, the new guide
describes how you can <a
href="https://guides.grails.org/neo4j-movies/guide/index.html">build a graph
application with the Grails framework, GORM 6.1 and Neo4j</a>!
Enjoy!</p>]]></description><author>Graeme
Rocher</author><guid>2017-03-27</guid><pubDate>Mon, 27 Mar [...]
+<p>To celebrate the release we have prepared the first of a series of new
guides to cover GORM 6.1. Among the many new features are huge improvements to
support Neo4j. Using the official Neo4j sample application, the new guide
describes how you can <a
href="https://guides.grails.org/neo4j-movies/guide/index.html">build a graph
application with the Grails framework, GORM 6.1 and Neo4j</a>!
Enjoy!</p>]]></description><author>Graeme
Rocher</author><guid>2017-03-27</guid><pubDate>Mon, 27 Mar [...]
<p>Tags: <a href="https://grails.apache.org/blog/tag/quickcast.html"><span
class="hashtag">#quickcast</span></a></p>
-<p>In this short video tutorial, Grails<sup>®</sup> framework co-founder, <a
href="https://objectcomputing.com/products/2gm-team#brown">Jeff Scott
Brown</a>, highlights some of the great features of the Grails framework.</p>
-<p>In fewer than 18 minutes, Jeff describes several techniques for retrieving
configuration values at runtime and discusses the pros and cons of each. Visit
<a
href="https://objectcomputing.com/news/2016/08/31/retrieving-config-values-grails-3">this
Grails blog post</a> for an accompanying article.</p>
-<p>For this Quickcast, you’ll need no more than a basic understanding of the
Grails framework.</p>
-<p>Grails Quickcasts, brought to you through a partnership between <a
href="https://objectcomputing.com/">Object Computing, Inc.</a> (OCI) and <a
href="https://dzone.com/">DZone</a>, provide bite-sized tutorials to help you
maximize your productivity with the Framework.</p>
-<iframe width="100%" height="560"
src="https://www.youtube-nocookie.com/embed/Qw5hjwT9EOc"
frameborder="0"></iframe>]]></description><author>Jeff Scott
Brown</author><guid>2017-01-20-3</guid><pubDate>Fri, 20 Jan 2017 00:00:00
GMT</pubDate></item><item><title>Quickcast #3: Multi-Project
Builds</title><link>https://grails.apache.org/blog/2017-01-20-1.html</link><description><![CDATA[</p>
-<p>Tags: <a href="https://grails.apache.org/blog/tag/quickcast.html"><span
class="hashtag">#quickcast</span></a></p>
-<p>In this video, Grails<sup>®</sup> framework co-founder Graeme Rocher walks
you through multi-project builds in Grails apps.</p>
-<p>The Grails framework does a few handy things with multi-project builds and
plugins, not the least of which being that Grails compiles your plugins first
and puts the class and resources of those plugins directly in the classpath.
This lets you make changes to your plugins and instantly see those changes in
your build.</p>
+<p>Grails<sup>®</sup> 3 is a high-productivity framework for building web
applications for the JVM.</p>
+<p>IntelliJ IDEA is a high-productivity Integrated Development Environment
(IDE) for building a variety of application types. IDEA has always had great
support for building Grails applications and, in particular, has the best
support of any IDE for developing with Grails 3.</p>
+<p>In this 20-minute video, Grails framework co-founder, <a
href="https://objectcomputing.com/products/2gm-team#brown">Jeff Scott
Brown</a>, introduces several tips and tricks related to building Grails 3
applications in IDEA.</p>
<p>Grails Quickcasts, brought to you through a partnership between <a
href="https://objectcomputing.com/">Object Computing, Inc.</a> (OCI) and <a
href="https://dzone.com/">DZone</a>, provide bite-sized tutorials to help you
maximize your productivity with the Framework.</p>
-<iframe width="100%" height="560"
src="https://www.youtube-nocookie.com/embed/yNA0ce5fG9s"
frameborder="0"></iframe>]]></description><author>Graeme
Rocher</author><guid>2017-01-20-1</guid><pubDate>Fri, 20 Jan 2017 00:00:00
GMT</pubDate></item><item><title>Quickcast #4: Angular
Scaffolding</title><link>https://grails.apache.org/blog/2017-01-20-2.html</link><description><![CDATA[</p>
+<iframe width="100%" height="560"
src="https://www.youtube-nocookie.com/embed/XsCCsTRdezw"
frameborder="0"></iframe>]]></description><author>Jeff Scott
Brown</author><guid>2017-01-20-4</guid><pubDate>Fri, 20 Jan 2017 00:00:00
GMT</pubDate></item><item><title>Quickcast #4: Angular
Scaffolding</title><link>https://grails.apache.org/blog/2017-01-20-2.html</link><description><![CDATA[</p>
<p>Tags: <a href="https://grails.apache.org/blog/tag/quickcast.html"><span
class="hashtag">#quickcast</span></a> <a
href="https://grails.apache.org/blog/tag/rest.html"><span
class="hashtag">#rest</span></a></p>
<p>In this Quickcast, 2GM (Groovy, Grails<sup>®</sup> framework, and
Micronaut) team member, <a
href="https://objectcomputing.com/products/2gm-team#kleeh">James Kleeh</a>,
walks you through the process of using the Angular scaffolding for Grails apps
to build a fully functional web app, using a simple blog format for
demonstration.</p>
<p>The tutorial explains how to have the Grails framework set up a REST
endpoint and all the Angular modules needed to get the web app running.</p>
<p>Grails Quickcasts, brought to you through a partnership between <a
href="https://objectcomputing.com/">Object Computing, Inc.</a> (OCI) and <a
href="https://dzone.com/">DZone</a>, provide bite-sized tutorials to help you
maximize your productivity with the Framework.</p>
-<iframe width="100%" height="560"
src="https://www.youtube-nocookie.com/embed/tT4BdlRFAis"
frameborder="0"></iframe>]]></description><author>James
Kleeh</author><guid>2017-01-20-2</guid><pubDate>Fri, 20 Jan 2017 00:00:00
GMT</pubDate></item><item><title>Quickcast #6: Developing Grails® 3
Applications with IntelliJ
IDEA</title><link>https://grails.apache.org/blog/2017-01-20-4.html</link><description><![CDATA[</p>
+<iframe width="100%" height="560"
src="https://www.youtube-nocookie.com/embed/tT4BdlRFAis"
frameborder="0"></iframe>]]></description><author>James
Kleeh</author><guid>2017-01-20-2</guid><pubDate>Fri, 20 Jan 2017 00:00:00
GMT</pubDate></item><item><title>Quickcast #3: Multi-Project
Builds</title><link>https://grails.apache.org/blog/2017-01-20-1.html</link><description><![CDATA[</p>
<p>Tags: <a href="https://grails.apache.org/blog/tag/quickcast.html"><span
class="hashtag">#quickcast</span></a></p>
-<p>Grails<sup>®</sup> 3 is a high-productivity framework for building web
applications for the JVM.</p>
-<p>IntelliJ IDEA is a high-productivity Integrated Development Environment
(IDE) for building a variety of application types. IDEA has always had great
support for building Grails applications and, in particular, has the best
support of any IDE for developing with Grails 3.</p>
-<p>In this 20-minute video, Grails framework co-founder, <a
href="https://objectcomputing.com/products/2gm-team#brown">Jeff Scott
Brown</a>, introduces several tips and tricks related to building Grails 3
applications in IDEA.</p>
+<p>In this video, Grails<sup>®</sup> framework co-founder Graeme Rocher walks
you through multi-project builds in Grails apps.</p>
+<p>The Grails framework does a few handy things with multi-project builds and
plugins, not the least of which being that Grails compiles your plugins first
and puts the class and resources of those plugins directly in the classpath.
This lets you make changes to your plugins and instantly see those changes in
your build.</p>
+<p>Grails Quickcasts, brought to you through a partnership between <a
href="https://objectcomputing.com/">Object Computing, Inc.</a> (OCI) and <a
href="https://dzone.com/">DZone</a>, provide bite-sized tutorials to help you
maximize your productivity with the Framework.</p>
+<iframe width="100%" height="560"
src="https://www.youtube-nocookie.com/embed/yNA0ce5fG9s"
frameborder="0"></iframe>]]></description><author>Graeme
Rocher</author><guid>2017-01-20-1</guid><pubDate>Fri, 20 Jan 2017 00:00:00
GMT</pubDate></item><item><title>Quickcast #5: Retrieving Runtime Config Values
in Grails®
3</title><link>https://grails.apache.org/blog/2017-01-20-3.html</link><description><![CDATA[</p>
+<p>Tags: <a href="https://grails.apache.org/blog/tag/quickcast.html"><span
class="hashtag">#quickcast</span></a></p>
+<p>In this short video tutorial, Grails<sup>®</sup> framework co-founder, <a
href="https://objectcomputing.com/products/2gm-team#brown">Jeff Scott
Brown</a>, highlights some of the great features of the Grails framework.</p>
+<p>In fewer than 18 minutes, Jeff describes several techniques for retrieving
configuration values at runtime and discusses the pros and cons of each. Visit
<a
href="https://objectcomputing.com/news/2016/08/31/retrieving-config-values-grails-3">this
Grails blog post</a> for an accompanying article.</p>
+<p>For this Quickcast, you’ll need no more than a basic understanding of the
Grails framework.</p>
<p>Grails Quickcasts, brought to you through a partnership between <a
href="https://objectcomputing.com/">Object Computing, Inc.</a> (OCI) and <a
href="https://dzone.com/">DZone</a>, provide bite-sized tutorials to help you
maximize your productivity with the Framework.</p>
-<iframe width="100%" height="560"
src="https://www.youtube-nocookie.com/embed/XsCCsTRdezw"
frameborder="0"></iframe>]]></description><author>Jeff Scott
Brown</author><guid>2017-01-20-4</guid><pubDate>Fri, 20 Jan 2017 00:00:00
GMT</pubDate></item><item><title>G3 Summit 2016
Wrap-up!</title><link>https://grails.apache.org/blog/2016-12-14.html</link><description><![CDATA[</p>
+<iframe width="100%" height="560"
src="https://www.youtube-nocookie.com/embed/Qw5hjwT9EOc"
frameborder="0"></iframe>]]></description><author>Jeff Scott
Brown</author><guid>2017-01-20-3</guid><pubDate>Fri, 20 Jan 2017 00:00:00
GMT</pubDate></item><item><title>G3 Summit 2016
Wrap-up!</title><link>https://grails.apache.org/blog/2016-12-14.html</link><description><![CDATA[</p>
<p><img src="2016-12-14-img01.jpg" alt="The OCI Grails team at G3 Summit 2016"
/></p>
<p>Last month, nearly the entire <a
href="https://objectcomputing.com/products/2gm-team">2GM (Groovy,
Grails<sup>®</sup> framework, and Micronaut) team</a> from [Object Computing,
Inc.] (https://objectcomputing.com/) (OCI) converged on Fort Lauderdale for the
inaugural edition of the G3 Summit, the conference for the Apache Groovy,
Grails framework, and Gradle Community. The event is organized by <a
href="https://www.nofluffjuststuff.com/home/main">No Fluff Just Stuff</a> and
is a fantas [...]
<p>OCI team members presented over 30 workshops and breakout sessions during
the event, in addition to socializing with attendees between sessions and after
hours. We’ve asked a few team members to share their experiences at the
conference. We hope you will join us next year!</p>
@@ -5634,7 +5634,7 @@ cache:
<li>REST improvements</li>
<li>Latest and greatest libraries (Spring Boot 1.4, Gradle 3.0, etc.)</li>
</ul>
-<p>These are just some of the highlights. I recommend checking out the
dedicated <a
href="https://docs.grails.org/3.2.x/guide/introduction.html#whatsNew">"What's
New"</a> section in the brand new Asciidoctor-based <a
href="https://docs.grails.org/3.2.x">user guide</a> for more information.</p>
+<p>These are just some of the highlights. I recommend checking out the
dedicated <a
href="https://grails.apache.org/docs/3.2.x/guide/introduction.html#whatsNew">"What's
New"</a> section in the brand new Asciidoctor-based <a
href="https://grails.apache.org/docs/3.2.x">user guide</a> for more
information.</p>
<p>Finally, thanks to all those who contributed feedback and issue reports to
the release. We look forward to the continued participation of the Grails
community as the framework continues to
evolve.</p>]]></description><author>Graeme
Rocher</author><guid>2016-09-28</guid><pubDate>Wed, 28 Sep 2016 00:00:00
GMT</pubDate></item><item><title>How to Migrate from Resources Plugin to
Asset-Pipeline</title><link>https://grails.apache.org/blog/2016-09-12.html</link><description><![CDATA[</p>
<p>Tags: <a href="https://grails.apache.org/blog/tag/plugins.html"><span
class="hashtag">#plugins</span></a></p>
<h2>Introduction</h2>
@@ -5793,7 +5793,7 @@ dataSource.driverClassName = 'org.h2.Driver'
</code></pre>
<p>This article will not go into detail about YAML syntax. For that see <a
href="https://yaml.org/">the main YAML site</a>. Instead, this article will
focus on Grails 3 specific features related to accessing those configuration
values.</p>
<h2>The Config Property in GrailsApplication</h2>
-<p>The <a
href="https://docs.grails.org/3.1.10/api/grails/core/GrailsApplication.html">GrailsApplication</a>
interface defines the <a
href="https://docs.grails.org/3.1.10/api/grails/core/GrailsApplication.html#getConfig()">getConfig</a>
method which returns a <a
href="https://docs.grails.org/3.1.10/api/grails/config/Config.html">Config</a>
object. In the Spring application context is a bean named
<code>grailsApplication</code> which is an instance of a class which implements
the <code>Gr [...]
+<p>The <a
href="https://grails.apache.org/docs/3.1.10/api/grails/core/GrailsApplication.html">GrailsApplication</a>
interface defines the <a
href="https://grails.apache.org/docs/3.1.10/api/grails/core/GrailsApplication.html#getConfig()">getConfig</a>
method which returns a <a
href="https://grails.apache.org/docs/3.1.10/api/grails/config/Config.html">Config</a>
object. In the Spring application context is a bean named
<code>grailsApplication</code> which is an instance of a class which im [...]
<pre><code class="language-yaml"># grails-app/conf/application.yml
max:
line:
@@ -5836,7 +5836,7 @@ Integer maxLineNumbers =
config.getProperty('max.line.numbers', Integer)
Integer maxLineNumbers = config.getProperty('max.line.numbers', Integer, 2112)
</code></pre>
<h3>Required Properties</h3>
-<p>For required properties you could write application code that reacts
however is appropriate if the property doesn't exist. You could also use the <a
href="https://docs.grails.org/3.1.10/api/grails/config/ConfigMap.html#getRequiredProperty(java.lang.String,%20java.lang.Class)">getRequiredProperty</a>
method which will throw an exception if a requested property does not
exist.</p>
+<p>For required properties you could write application code that reacts
however is appropriate if the property doesn't exist. You could also use the <a
href="https://grails.apache.org/docs/3.1.10/api/grails/config/ConfigMap.html#getRequiredProperty(java.lang.String,%20java.lang.Class)">getRequiredProperty</a>
method which will throw an exception if a requested property does not
exist.</p>
<pre><code class="language-groovy">// retrieve the max.line.numbers config
value
// throws IllegalStateException if the
// config value does not exist
@@ -5858,7 +5858,7 @@ class SomeController {
}
</code></pre>
<h3>Config Injection Using GrailsConfigurationAware</h3>
-<p>An alternative is to retrieve the config value only once and then hold on
to it so that it may be used later as many times as necessary. One way to do
this is to have the config injected into any bean by implementing the <a
href="https://docs.grails.org/3.1.10/api/grails/core/support/GrailsConfigurationAware.html">GrailsConfigurationAware</a>
interface. There is a bean post processor that will discover all beans that
implement at that interface and that post processor will invoke the [...]
+<p>An alternative is to retrieve the config value only once and then hold on
to it so that it may be used later as many times as necessary. One way to do
this is to have the config injected into any bean by implementing the <a
href="https://grails.apache.org/docs/3.1.10/api/grails/core/support/GrailsConfigurationAware.html">GrailsConfigurationAware</a>
interface. There is a bean post processor that will discover all beans that
implement at that interface and that post processor will invo [...]
<pre><code class="language-groovy">import grails.config.Config
import grails.core.support.GrailsConfigurationAware
@@ -6005,7 +6005,7 @@ Marcin Erdmann (His first stateside appearance at Gr8?)
did an all day Ratpack s
<p>Of course GORM 6.0 is usable in all versions of Grails 3.x.</p>
<p>On the Grails side, Grails 3.2 ships with release candidates of the new
AngularJS 1.0 scaffolding (Angular 2.0 support is coming) and JSON Views 1.1
plugins as well as numerous improvements to the profiles.</p>
<p>Grails 3.2 has also been updated to the latest and greatest dependencies
including Spring Boot 1.4 RC1 and Spring 4.3.</p>
-<p>Check out the <a
href="https://docs.grails.org/3.2.x/guide/introduction.html#whatsNew">What's
New in Grails 3.2 Guide</a> for information on all the updates.</p>
+<p>Check out the <a
href="https://grails.apache.org/docs/3.2.x/guide/introduction.html#whatsNew">What's
New in Grails 3.2 Guide</a> for information on all the updates.</p>
<p>We're inching closer to an RC now so it is a great time to try your
applications and <a href="https://github.com/apache/grails-core/issues">report
issues</a>!</p>
<p>If you want to hear more come and see us at Gr8Conf US in Minneapolis USA,
or G3 Summit in Fort Lauderdale USA!</p>]]></description><author>Graeme
Rocher</author><guid>2016-07-22</guid><pubDate>Fri, 22 Jul 2016 00:00:00
GMT</pubDate></item><item><title>Grails® Angular
Scaffolding</title><link>https://grails.apache.org/blog/2016-07-06.html</link><description><![CDATA[</p>
<p>Tags: <a href="https://grails.apache.org/blog/tag/angular.html"><span
class="hashtag">#angular</span></a></p>
@@ -6779,7 +6779,7 @@ class SkillsTestController {
<p>Now that we have our backend largely ready to go, we’re ready to set up
React.</p>
<blockquote>
<p>Question: Why Do This?</p>
-<p>Why not use separate backend and front-end apps? In a microservice
architecture, the work we’ve done might be sufficient - we could now build a
separate React/node-based front-end application independent of our Grails
backend. This is a great strategy, and <a
href="https://docs.grails.org/latest/guide/profiles.html#creatingProfiles">Grails
3.1 ships with a profile</a> tailored to this use case (web-api). Another
option is to take advantage of Gradle multi-project builds, with separate [...]
+<p>Why not use separate backend and front-end apps? In a microservice
architecture, the work we’ve done might be sufficient - we could now build a
separate React/node-based front-end application independent of our Grails
backend. This is a great strategy, and <a
href="https://grails.apache.org/docs/latest/guide/profiles.html#creatingProfiles">Grails
3.1 ships with a profile</a> tailored to this use case (web-api). Another
option is to take advantage of Gradle multi-project builds, with s [...]
<p>In this article, however, we’re considering the use of React as the “view”
(the V in MVC) in a standard Grails application. And although we’re sharing a
project directory, the React code and Grails artifacts are independent, and
will communicate at runtime via our restful API just as if they were separate
apps. The only thing tying these two apps together is the same Gradle build,
which gives us the benefits described earlier in the article (in fact, it would
be quite easy to split ou [...]
<p>There’s many situations where a team may want to bring React into a Grails
application, and it can be done in a way that allows for full developer
productivity for both Grails and Node/React developers. Read on to see how!</p>
</blockquote>