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 44c528ba264 Updating apache/grails-website asf-site-production branch
for Github Actions run:18414692143
44c528ba264 is described below
commit 44c528ba2649714cb5ad231c8bbc4a56d667439f
Author: jamesfredley <[email protected]>
AuthorDate: Fri Oct 10 18:20:56 2025 +0000
Updating apache/grails-website asf-site-production branch for Github
Actions run:18414692143
---
blog/2015-03-01.html | 6 +--
blog/2016-04-13.html | 2 +-
blog/2023-07-25-introducing-grails-6.html | 2 +-
blog/index.html | 28 +++++------
blog/tag/quickcast.html | 16 +++----
foundation/minutes.xml | 2 +-
rss.xml | 78 +++++++++++++++----------------
7 files changed, 67 insertions(+), 67 deletions(-)
diff --git a/blog/2015-03-01.html b/blog/2015-03-01.html
index ebc25d04eec..dc9fb448570 100644
--- a/blog/2015-03-01.html
+++ b/blog/2015-03-01.html
@@ -147,7 +147,7 @@ class FirstInterceptorSpec extends Specification {
}
</code></pre>
<h2>The Interceptor Trait</h2>
-<p>Grails 3 takes advantage of Groovy's powerful and flexible support for
traits in many places. All interceptors are automatically made to implement the
<a
href="https://grails.apache.org/docs/3.0.x/api/grails/artefact/Interceptor.html">grails.artefact.Interceptor</a>
trait so all of the methods and properties defined by that trait and all of
the methods and properties defined by traits which that trait extends are all
available inside of an interceptor. This provides easy access to att [...]
+<p>Grails 3 takes advantage of Groovy's powerful and flexible support for
traits in many places. All interceptors are automatically made to implement the
<a
href="https://grails.github.io/legacy-grails-doc/3.0.x/api/grails/artefact/Interceptor.html">grails.artefact.Interceptor</a>
trait so all of the methods and properties defined by that trait and all of
the methods and properties defined by traits which that trait extends are all
available inside of an interceptor. This provides easy a [...]
<h2>Matching Requests</h2>
<p>A convention is imposed which will automatically configure interceptors to
match all requests to their corresponding controller. The implicit mapping from
an interceptor to a controller is based on the artifact names. For example, by
default the <code>PersonInterceptor</code> will match all requests to the
<code>PersonController</code>.</p>
<p>Interceptors often need to deviate from the convention and define which
requests they should participate in using the <code>match</code>or
<code>matchAll</code> method.</p>
@@ -189,7 +189,7 @@ class FirstInterceptor {
// ...
}
</code></pre>
-<p>The <code>match</code> and <code>matchAll</code> methods in an intereceptor
each return an instance of <a
href="https://grails.apache.org/docs/3.0.x/api/grails/interceptors/Matcher.html">grails.interceptors.Matcher</a>.
Most of the methods in <code>Matcher</code> also return the
<code>Matcher</code> which allows for method chaining as shown above with
<code>matchAll().excludes(controller: 'auth')</code>.</p>
+<p>The <code>match</code> and <code>matchAll</code> methods in an intereceptor
each return an instance of <a
href="https://grails.github.io/grails-doc/3.0.x/api/grails/interceptors/Matcher.html">grails.interceptors.Matcher</a>.
Most of the methods in <code>Matcher</code> also return the
<code>Matcher</code> which allows for method chaining as shown above with
<code>matchAll().excludes(controller: 'auth')</code>.</p>
<p>Care should be taken to narrow the group of requests that an interceptor is
applied to. Keep in mind that whatever logic is contained in an interceptor is
being engaged for all of the requests that the interceptor matches.</p>
<h2>Interceptor Methods</h2>
<p>There are 3 separate methods that an interceptor may define to participate
in different parts of the request processing lifecycle. The <code>before</code>
method is executed before the controller action is invoked. The
<code>after</code> method is invoked after the controller action returns and
before the view is rendered. The <code>afterView</code> method is invoked after
the view is rendered. An interceptor may provide any combination of these 3
call back methods and does not need t [...]
@@ -270,7 +270,7 @@ logger 'grails.app.controllers.demo.SimpleAuthInterceptor',
<p>The framework offers flexibility around this such that if you would like to
separate your interceptors from your controllers you can do that by moving the
interceptors to a directory like <code>grails-app/interceptors/</code>. If the
interceptor defined above were moved from
<code>grails-app/controllers/demo/SimpleAuthInterceptor.groovy</code> to
<code>grails-app/interceptors/demo/SimpleAuthInterceptor.groovy</code>, the
logger name would be <code>grails.app.interceptors.demo.SimpleAu [...]
<h2>Interceptors Are Spring Beans</h2>
<p>All interceptors are configured as beans in the Spring application context
and are configured to be autowired by name. This means that just like other
Grails artifacts, an interceptor may define a property with a name that matches
a bean name and that property will be initialized using standard Spring
dependency injection.</p>
-<p>In addition to participating in dependency injection, because interceptors
are Spring beans they participate in all of the standard Spring bean management
handling. For example, if an interceptor wanted access to the application's
configuration, the intereceptor class could implement the <a
href="https://grails.apache.org/docs/3.0.x/api/grails/core/support/GrailsConfigurationAware.html">grails.core.support.GrailsConfigurationAware</a>
interface.</p>
+<p>In addition to participating in dependency injection, because interceptors
are Spring beans they participate in all of the standard Spring bean management
handling. For example, if an interceptor wanted access to the application's
configuration, the intereceptor class could implement the <a
href="https://grails.github.io/grails-doc/3.0.x/api/grails/core/support/GrailsConfigurationAware.html">grails.core.support.GrailsConfigurationAware</a>
interface.</p>
<pre><code class="language-groovy">package demo
import grails.config.Config
diff --git a/blog/2016-04-13.html b/blog/2016-04-13.html
index 49c32d82f15..3909fd38a99 100644
--- a/blog/2016-04-13.html
+++ b/blog/2016-04-13.html
@@ -138,7 +138,7 @@ json {
<li>view_name.gson (Example: show.gson)</li>
</ul>
<p>The content type (defined by either the <code>ACCEPT</code> header or file
extension in the URI) is taken into account to allow different formats for the
same view.</p>
-<p>For more detail, see <a
href="https://grails.apache.org/docs/latest/guide/theWebLayer.html#gson">the
official documentation</a>.</p>
+<p>For more detail, see <a
href="https://grails.github.io/grails-views/latest/">the official
documentation</a>.</p>
<h2 class='space-above'>
<span>You might also like ...</span>
</h2>
diff --git a/blog/2023-07-25-introducing-grails-6.html
b/blog/2023-07-25-introducing-grails-6.html
index ed218b2bc4a..5449c65a615 100644
--- a/blog/2023-07-25-introducing-grails-6.html
+++ b/blog/2023-07-25-introducing-grails-6.html
@@ -104,7 +104,7 @@
<h2>Updates to Gradle 7.6:</h2>
<p>Grails 6 now provides support for the latest Gradle version, 7.6.1,
offering developers a more efficient and robust build automation tool. Gradle
7.6.1 brings with it various improvements, enhanced performance, and additional
features, further streamlining the development process and ensuring
compatibility with the latest libraries and dependencies.</p>
<h2>Introducing the New Grails Forge:</h2>
-<p><strong>Grails 6 not only embraces modern Java and the latest Spring and
Spring Boot updates but also introduces the New Grails Forge UI,
revolutionizing the web development experience for creating and managing Grails
projects.</strong> With <a href="https://start.grails.org/">the New Grails
Forge UI</a>, developers can enjoy a modern and efficient user interface with
simplified project creation, intuitive navigation, real-time feedback and
validation, visual dependency management, en [...]
+<p><strong>Grails 6 not only embraces modern Java and the latest Spring and
Spring Boot updates but also introduces the New Grails Forge UI,
revolutionizing the web development experience for creating and managing Grails
projects.</strong> With <a href="https://grails.github.io/grails-forge-ui/">the
New Grails Forge UI</a>, developers can enjoy a modern and efficient user
interface with simplified project creation, intuitive navigation, real-time
feedback and validation, visual dependenc [...]
<h2>Enhanced Integration of the Micronaut framework with Grails:</h2>
<p>The Grails framework has long provided integration with the Micronaut
framework, fostering seamless collaboration between the two Frameworks. With
Grails 6, we are proud to announce further improvements in this integration,
enhancing the developer experience with each major release. Developers can now
enjoy even better Micronaut integration, promoting code reuse and reducing
redundancy between Grails and Micronaut components. For instance, developers
can easily inject Micronaut beans [...]
<p>Another example of the improved Micronaut integration is the ability to
utilize the Framework’s declarative client, allowing Grails applications to
consume RESTful APIs with minimal boilerplate code. This streamlined approach
enhances development efficiency and promotes maintainable, efficient
communication between microservices.</p>
diff --git a/blog/index.html b/blog/index.html
index eda9e463548..d7a89f8b119 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -265,17 +265,17 @@
<h2>Grails and the Recent Spring Framework RCE</h2>
</a>
</article></div>
- <div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/grails-blog-index-4.png)'>
- <a href='https://grails.apache.org/blog/2022-01-07-2gm-town-hall-q1.html'>
- <h3>January 7, 2022</h3>
- <h2>2GM Town Hall Meeting: 2022 Q1</h2>
- </a>
-</article></div></div><div class="threecolumns">
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/grails-blog-index-3.png)'>
<a
href='https://grails.apache.org/blog/2022-01-07-gradle-enterprise-tools-and-infrastructure-partner.html'>
<h3>January 7, 2022</h3>
<h2>Grails Foundation Announces First Tools and I...</h2>
</a>
+</article></div></div><div class="threecolumns">
+ <div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/grails-blog-index-4.png)'>
+ <a href='https://grails.apache.org/blog/2022-01-07-2gm-town-hall-q1.html'>
+ <h3>January 7, 2022</h3>
+ <h2>2GM Town Hall Meeting: 2022 Q1</h2>
+ </a>
</article></div>
<div class='column'><article class='blogcard' style='background-image:
url(https://grails.apache.org/images/grails-blog-index-2.png)'>
<a href='https://grails.apache.org/blog/2021-12-15-grails-five-one.html'>
@@ -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-4.html'>
+ <a href='https://grails.apache.org/blog/2017-01-20-1.html'>
<h3>January 20, 2017</h3>
- <h2>Quickcast #6: Developing Grails® 3 Applicatio...</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-3.html'>
+ <a href='https://grails.apache.org/blog/2017-01-20-2.html'>
<h3>January 20, 2017</h3>
- <h2>Quickcast #5: Retrieving Runtime Config Value...</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-1.html'>
+ <a href='https://grails.apache.org/blog/2017-01-20-3.html'>
<h3>January 20, 2017</h3>
- <h2>Quickcast #3: Multi-Project Builds</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)'>
- <a href='https://grails.apache.org/blog/2017-01-20-2.html'>
+ <a href='https://grails.apache.org/blog/2017-01-20-4.html'>
<h3>January 20, 2017</h3>
- <h2>Quickcast #4: Angular Scaffolding</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/2016-12-14.jpg)'>
diff --git a/blog/tag/quickcast.html b/blog/tag/quickcast.html
index 3abc45d6d13..963a8340984 100644
--- a/blog/tag/quickcast.html
+++ b/blog/tag/quickcast.html
@@ -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-4.html'>
+ <a href='https://grails.apache.org/blog/2017-01-20-1.html'>
<h3>January 20, 2017</h3>
- <h2>Quickcast #6: Developing Grails® 3 Applicatio...</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-3.html'>
+ <a href='https://grails.apache.org/blog/2017-01-20-2.html'>
<h3>January 20, 2017</h3>
- <h2>Quickcast #5: Retrieving Runtime Config Value...</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-1.html'>
+ <a href='https://grails.apache.org/blog/2017-01-20-3.html'>
<h3>January 20, 2017</h3>
- <h2>Quickcast #3: Multi-Project Builds</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/quickcast.jpg)'>
- <a href='https://grails.apache.org/blog/2017-01-20-2.html'>
+ <a href='https://grails.apache.org/blog/2017-01-20-4.html'>
<h3>January 20, 2017</h3>
- <h2>Quickcast #4: Angular Scaffolding</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)'>
diff --git a/foundation/minutes.xml b/foundation/minutes.xml
index 1d41fa63378..10c997db6df 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 16:13:10
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 18:16:44
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/rss.xml b/rss.xml
index 548752b284a..162084f882a 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 16:13:13
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 18:16:47
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 [...]
@@ -2529,21 +2529,21 @@ Moving the Grails Foundation under Unity provides a
meaningful alliance between
<p>Because Grails applications are built on top of Spring and Spring Boot, the
Grails team has taken this vulnerability very seriously. Our investigations
have yielded no evidence that Grails 4.x or 5.x applications are vulnerable to
this attack. The Grails framework has its own data-binding logic, which
includes checks to validate that a given property a) is in a list of properties
that may be bound to, and b) exists within the target metaClass. All other
property candidates are ignored.</p>
<p>The known exploit is one mechanism that can be used for this vulnerability.
We will continue to monitor this situation and alert the Grails community of
any vulnerabilities discovered, along with mitigation steps.</p>
<h2>Next Steps</h2>
-<p>Although at this time, we have no reason to believe that Grails
applications are vulnerable, as a precaution, we have released <a
href="https://github.com/apache/grails-core/releases/tag/v5.1.6">Grails
5.1.6</a>. This Grails Framework release updates our Spring dependency to
5.3.18, which includes the upstream patch from the Spring Framework
Team.</p>]]></description><author>Jason
Schindler</author><guid>2022-03-31-grails-spring-rce</guid><pubDate>Thu, 31 Mar
2022 00:00:00 GMT</pubDa [...]
-<p>A big thanks to everyone who joined us for our Q1 2GM Town Hall Meeting!
For those of you who missed the live event, the recording is embedded below.</p>
-<p>At this quarter’s meeting, we provided an update on the latest advancements
with the Grails and Micronaut frameworks, including a look at what is coming
soon. We also shared the latest news and sponsors of the Grails and Micronaut
Foundations, as well as some great live discussions and Q&A with our
panel.</p>
-<p>A special thanks to our fantastic panel of experts: James Kleeh, Puneet
Behl, Sergio del Amo Caballero, and our awesome guest <a
href="http://melix.github.io/blog/">Cédric Champeau</a>.</p>
-<p>Till next time!</p>
-<p>— Jen Wiese</p>
-<p><a href="https://objectcomputing.com/download_file/5451">Slides</a></p>
-<iframe width="100%" height="560"
src="https://www.youtube-nocookie.com/embed/EE5flg8Hj_E"
frameborder="0"></iframe>]]></description><author>Jen
Wiese</author><guid>2022-01-07-2gm-town-hall-q1</guid><pubDate>Fri, 07 Jan 2022
00:00:00 GMT</pubDate></item><item><title>Grails Foundation Announces First
Tools and Infrastructure
Partner</title><link>https://grails.apache.org/blog/2022-01-07-gradle-enterprise-tools-and-infrastructure-partner.html</link><description><![CDATA[</p>
+<p>Although at this time, we have no reason to believe that Grails
applications are vulnerable, as a precaution, we have released <a
href="https://github.com/apache/grails-core/releases/tag/v5.1.6">Grails
5.1.6</a>. This Grails Framework release updates our Spring dependency to
5.3.18, which includes the upstream patch from the Spring Framework
Team.</p>]]></description><author>Jason
Schindler</author><guid>2022-03-31-grails-spring-rce</guid><pubDate>Thu, 31 Mar
2022 00:00:00 GMT</pubDa [...]
<p><strong>Gradle has joined the Grails Foundation as our first Tools and
Infrastructure Partner</strong></p>
<p>The Grails Foundation™ is truly appreciative of the tremendous support we
receive from our sponsors. In addition to financial support, generous
contributions of development tools, infrastructure, and other resources are
essential to the continued evolution of the Grails® framework. Thus, we have
established a new partnership program to recognize the companies whose
contributions enable us to maintain and expand both the open source
technologies and the assets we rely on to keep our co [...]
<p>Today, we are pleased to announce that Gradle Inc, the providers of <a
href="https://gradle.org">Gradle Build Tool</a> and <a
href="https://gradle.com">Gradle Enterprise</a>, has joined the Grails
Foundation as our first Tools and Infrastructure Partner! In support of our
organizations' shared values and goals within the open source ecosystem, Gradle
provides the Foundation free instances of <a href="https://gradle.com">Gradle
Enterprise</a>.</p>
<p>Gradle Enterprise has helped our team to improve build times and
test-feedback cycle times, and improve troubleshooting efficiency by combining
root-cause analysis data with failure analytics.</p>
<p>We’re delighted to have Gradle on board as a Tools and Infrastructure
Partner. The Gradle team's support and excitement for the Grails technology
over the years has been tremendous. Their engagement in our community has been
awesome, and we look forward to continued collaboration in the years to come.
We truly appreciate the dedication and passion Gradle has for open source
projects. On behalf of the Grails Foundation, thank you! Initiatives like these
that support and grow our Framew [...]
<p>The Grails Foundation is a not-for-profit organization that supports the
Grails framework. The Foundation not only builds and supports an ecosystem of
documentation, functionality, and services, it promotes and evangelizes the
Framework as a leading technology in the JVM space. The generous support of our
Corporate Sponsors allows the Foundation to continue to ensure technical
innovation and advancement of the Framework as a free and open public-use
software development toolkit for ou [...]
-<p>To learn more about how you or your organization can support this
Foundation, please <a href="/">check us
out</a>!</p>]]></description><author>Jen
Wiese</author><guid>2022-01-07-gradle-enterprise-tools-and-infrastructure-partner</guid><pubDate>Fri,
07 Jan 2022 00:00:00 GMT</pubDate></item><item><title>Grails Framework 5.1
Released</title><link>https://grails.apache.org/blog/2021-12-15-grails-five-one.html</link><description><![CDATA[</p>
+<p>To learn more about how you or your organization can support this
Foundation, please <a href="/">check us
out</a>!</p>]]></description><author>Jen
Wiese</author><guid>2022-01-07-gradle-enterprise-tools-and-infrastructure-partner</guid><pubDate>Fri,
07 Jan 2022 00:00:00 GMT</pubDate></item><item><title>2GM Town Hall Meeting:
2022
Q1</title><link>https://grails.apache.org/blog/2022-01-07-2gm-town-hall-q1.html</link><description><![CDATA[</p>
+<p>A big thanks to everyone who joined us for our Q1 2GM Town Hall Meeting!
For those of you who missed the live event, the recording is embedded below.</p>
+<p>At this quarter’s meeting, we provided an update on the latest advancements
with the Grails and Micronaut frameworks, including a look at what is coming
soon. We also shared the latest news and sponsors of the Grails and Micronaut
Foundations, as well as some great live discussions and Q&A with our
panel.</p>
+<p>A special thanks to our fantastic panel of experts: James Kleeh, Puneet
Behl, Sergio del Amo Caballero, and our awesome guest <a
href="http://melix.github.io/blog/">Cédric Champeau</a>.</p>
+<p>Till next time!</p>
+<p>— Jen Wiese</p>
+<p><a href="https://objectcomputing.com/download_file/5451">Slides</a></p>
+<iframe width="100%" height="560"
src="https://www.youtube-nocookie.com/embed/EE5flg8Hj_E"
frameborder="0"></iframe>]]></description><author>Jen
Wiese</author><guid>2022-01-07-2gm-town-hall-q1</guid><pubDate>Fri, 07 Jan 2022
00:00:00 GMT</pubDate></item><item><title>Grails Framework 5.1
Released</title><link>https://grails.apache.org/blog/2021-12-15-grails-five-one.html</link><description><![CDATA[</p>
<p>The Grails Foundation™ is pleased to announce a new minor release: <a
href="https://github.com/apache/grails-core/releases/tag/v5.1.0"><strong>Grails
framework 5.1</strong></a>!</p>
<p>This release of the Grails framework includes a number of bug fixes and
Gradle 7.2 compatibility changes (the Gradle task definitions with <a
href="https://docs.gradle.org/7.0/userguide/upgrading_version_6.html#task_validation_problems_are_now_errors">incorrectly
defined input output will now fail the build</a>), plus a bunch of
dependencies updates. For more information, please check the <a
href="https://github.com/apache/grails-core/releases/tag/v5.1.0"><strong>Grails
5.1 release no [...]
<h2>Updated Dependencies</h2>
@@ -3134,7 +3134,7 @@ apply plugin:
"io.github.gradle-nexus.publish-plugin"
}
"documentationUrl":
"https://puneetbehl.github.io/myplugin/",
"mavenMetadataUrl":
"https://repo1.maven.org/maven2/com/github/puneetbehl/myplugin/maven-metadata.xml",
-}
+}
</code></pre>
</li>
<li>
@@ -3797,7 +3797,7 @@ import spock.lang.Specification
class SpySpec extends Specification implements
ControllerUnitTest<FooController> {
- void "Spy FooService"() {
+ void "Spy FooService"() {
given: "the collaborating service is a Spy"
def fooService = Spy(FooService)
@@ -3817,7 +3817,7 @@ class SpySpec extends Specification implements
ControllerUnitTest<FooControll
</code></pre>
<p>The above test creates a Spy on <code>FooService</code> by doing the
following:</p>
<pre><code class="language-groovy">def fooService = Spy(FooService)
-{% endhighlight %}
+{% endhighlight %}
The following code demonstrates how the Spy allows us to verify
`FooService.doSomething(name)` is called just once and the parameter passed to
it is equal to a String value of "Sally":
Moreover, it changes the method implementation to return a different String.
@@ -3920,7 +3920,7 @@ class AgeService {
<h2>Use Mockito to Verify Log Events</h2>
<p>The <a href="https://site.mockito.org/">Mockito</a> Library can be used to
verify logs take place. With Mockito, we can create a mock
<code>Appender</code> class, attach it to the logger, and then use an
<code>ArgumentCaptor</code> to capture the invocations sent to the logger.</p>
<p>build.gradle</p>
-<pre><code class="language-groovy">dependencies {
+<pre><code class="language-groovy">dependencies {
...
testCompile "org.mockito:mockito-core:2.+"
}
@@ -3952,7 +3952,7 @@ class AgeService {
<p><a href="https://projects.lidalia.org.uk/slf4j-test/">Slf4j Test</a> is a
test implementation of Slf4j that stores log messages in memory and provides
messages for retrieving them. This works nicely to substitute for the real
implementation in the test environment of Grails apps.</p>
<p>In <code>build.gradle</code>, we first need to depend on the jar, and then
exclude the real implementation from the test environment. It is quite simple
to check the logging events.</p>
<p>build.gradle</p>
-<pre><code class="language-groovy">dependencies {
+<pre><code class="language-groovy">dependencies {
...
testCompile 'uk.org.lidalia:slf4j-test:1.1.0'
}
@@ -4279,7 +4279,7 @@ class BookDataServiceSpec extends Specification {
then:
Book.count() == old(Book.count()) + 1
- cleanup:
+ cleanup:
bookDataService.deleteBook(book.id)
}
}
@@ -4789,24 +4789,24 @@ class HelloController {
<pre><code class="language-groovy">buildscript {
dependencies {
//Change to "angular-scaffolding:2.0.0.RC1"
- classpath org.grails.plugins:angular2-scaffolding:1.0.0.RC1
+ classpath org.grails.plugins:angular2-scaffolding:1.0.0.RC1
}
}
dependencies {
//Change to "angular-scaffolding:2.0.0.RC1"
- compile org.grails.plugins:angular2-scaffolding:1.0.0.RC1
+ compile org.grails.plugins:angular2-scaffolding:1.0.0.RC1
}
</code></pre>
<h3><a
href="https://github.com/grails-plugins/grails-angularjs-scaffolding">Angular
1.x</a></h3>
<pre><code class="language-groovy">buildscript {
dependencies {
//Change to "angularjs-scaffolding:1.0.3"
- classpath org.grails.plugins:angular-scaffolding:1.0.1
+ classpath org.grails.plugins:angular-scaffolding:1.0.1
}
}
dependencies {
//Change to "angularjs-scaffolding:1.0.3"
- compile org.grails.plugins:angular-scaffolding:1.0.1
+ compile org.grails.plugins:angular-scaffolding:1.0.1
}
</code></pre>
<h2>Conclusion</h2>
@@ -4914,19 +4914,7 @@ 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>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>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>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/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>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 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>
@@ -4936,7 +4924,19 @@ info.app.grailsVersion=3.2.5
<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>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/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 #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/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 #6: Developing Grails® 3
Applications with IntelliJ
IDEA</title><link>https://grails.apache.org/blog/2017-01-20-4.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>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>
<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>
@@ -5194,7 +5194,7 @@ drwxr-xr-x 10 zak staff 340 Nov 1 13:10 src
production:
dataSource:
jndiName: "java:jboss/datasources/MyDataSource"
- dbCreate: none
+ dbCreate: none
</code></pre>
<p>Note that you typically do not want the Grails tooling to create the schema
for you so we set <code>dbCreate</code> to <code>none</code>. You can then run
<code>grails schema-export</code> to generate a <code>build/ddl.sql</code> file
that you can use to create the database in your production environment.</p>
<p>On the JBoss side if you are using standalone deployment, you need to
modify the <code>standalone/configuration/standalone.xml</code> file to
configure your JNDI datasource. For example for MySQL adding the following
section within the <code><datasources></code> block will do:</p>
@@ -5406,7 +5406,7 @@ grailsPublish {
desc = "Full plugin description"
developers = [johndoe:"John Doe"]
portalUser = ""
- portalPassword = ""
+ portalPassword = ""
}
</code></pre>
<p>As can be seen, some values are not filled in, like credentials and
<code>githubSlug</code>. Let us add those values in a way where credentials are
not visible in the public GitHub repository.</p>
@@ -7099,7 +7099,7 @@ class SkillsTestController {
<p>We had <a
href="https://grails.io/post/142674392718/deploying-grails-3-to-wildfly-10">previously</a>
described how to deploy Grails<sup>®</sup> 3.1 applications to WildFly 10,
which is where all of the "cutting edge" work happens in the JBoss
world.</p>
<p>The process to deploy Grails 3.1 applications to JBoss 6.4 EAP is largely
similar, with some minor configuration differences.</p>
<p>Firstly, you have to configure your dependencies in
<code>build.gradle</code> correctly by marking Tomcat as a provided dependency
and including JAXB as a runtime dependency:</p>
-<pre><code class="language-groovy">provided
"org.springframework.boot:spring-boot-starter-tomcat"
+<pre><code class="language-groovy">provided
"org.springframework.boot:spring-boot-starter-tomcat"
runtime 'javax.xml.bind:jaxb-api:2.2.12'
</code></pre>
<p>Next you need to create a
<code>src/main/webapp/WEB-INF/jboss-deployment-structure.xml</code> file with
the following contents:</p>
@@ -7134,11 +7134,11 @@ runtime 'javax.xml.bind:jaxb-api:2.2.12'
<p>Luckily Gradle makes this fairly easy to control. Using the following
snippet you can enforce a particular GORM version within your
<code>build.gradle</code>:</p>
<pre><code class="language-groovy">configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
- if (details.requested.group == 'org.grails'
+ if (details.requested.group == 'org.grails'
&& details.requested.name.startsWith('grails-datastore')) {
details.useVersion("5.0.5.RELEASE")
}
- }
+ }
}
</code></pre>
<p>In this example I’m forcing Gradle to resolve the
<code>5.0.5.RELEASE</code> version of GORM using the Gradle
resolutionStrategy.</p>]]></description><author>Graeme
Rocher</author><guid>2016-04-27</guid><pubDate>Wed, 27 Apr 2016 00:00:00
GMT</pubDate></item><item><title>JSON
Views</title><link>https://grails.apache.org/blog/2016-04-13.html</link><description><![CDATA[</p>