blob: d6bf6050fcab72d403cc981a6ee10057ec586de8 [file]
<!DOCTYPE html>
<html lang="en">
<head>
<title>FAQ | Apache Grails&reg;</title>
<meta name="keywords" content="grails,jvm,framework,groovy,gradle,spring-boot,gorm"/>
<meta name="description" content="A powerful Groovy-based web application framework for the JVM built on top of Spring Boot"/>
<meta name="date" content="July 5, 2026"/>
<meta name="robots" content="all"/>
<meta name='twitter:card' content='summary_large_image'/>
<meta name='twitter:site' content='@grailsframework'/>
<meta name='twitter:description' content='A powerful Groovy-based web application framework for the JVM built on top of Spring Boot'/>
<meta name='twitter:creator' content='@grailsframework'/>
<meta property='og:image' content='https://grails.apache.org/images/grails.png'/>
<meta property='og:url' content='https://grails.apache.org/faq.html'/>
<meta property='og:title' content='FAQ | Apache Grails&reg;'/>
<meta property='og:description' content='A powerful Groovy-based web application framework for the JVM built on top of Spring Boot'/>
<meta property='og:type' content='website'/>
<meta charset='UTF-8'/>
<meta name='viewport' content='width=device-width, initial-scale=1'/>
<link rel='icon' href='https://grails.apache.org/images/favicon.ico'/>
<link rel='mask-icon' href='https://grails.apache.org/images/grails-pinned-icon.svg' color='feb672'/>
<link rel='alternate' type='application/rss+xml' title='RSS' href='https://grails.apache.org/rss.xml'/>
<link rel='stylesheet' href='https://grails.apache.org/stylesheets/screen.css'/>
<link rel='stylesheet' href='https://grails.apache.org/stylesheets/plugin.css'/>
<script src='https://grails.apache.org/javascripts/navigation.js'></script>
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
_paq.push(['setDoNotTrack', true]);
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u = 'https://analytics.apache.org/';
_paq.push(['setTrackerUrl', u + 'matomo.php']);
_paq.push(['setSiteId', '79']);
var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0];
g.async = true; g.src = u + 'matomo.js'; s.parentNode.insertBefore(g, s);
})();
</script>
<!-- End Matomo Code -->
<script
async
src="https://widget.kapa.ai/kapa-widget.bundle.js"
data-website-id="d804a9f2-51a2-414c-97f7-12f2a1ba4609"
data-project-name="Apache Grails"
data-project-color="#3F4346"
data-font-family="system-ui,-apple-system,BlinkMacSystemFont,Roboto,Helvetica,Arial,Segoe UI,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;"
data-project-logo="https://grails.apache.org/images/grails.png"
data-modal-override-open-id="ask-ai-input"
data-modal-override-open-class="search-input"
data-user-analytics-fingerprint-enabled="true"
data-modal-title="Apache Grails AI Assistant"
data-modal-example-questions-title="Try asking me..."
data-modal-example-questions="How does database migration work?,How does Spring Security work?"
data-button-text-color="#FBB576"
data-modal-header-bg-color="#FFFFFF"
data-modal-title-color="#FBB576"
data-consent-required="true"></script>
<link rel='stylesheet' href='https://grails.apache.org/stylesheets/paginate.css'/>
<script src='https://grails.apache.org/javascripts/paginate.js'></script>
<script src='https://grails.apache.org/javascripts/plugins.js'></script>
</head>
<body>
<header class='main-header'>
<div class='content'>
<a href='https://grails.apache.org/index.html'><img class='grails-logo' src='https://grails.apache.org/images/grails_logo.svg' alt='Grails Logo'/></a>
<a href='javascript:show("top-menus", "show-navigation-link")' id='show-navigation-link'
class='mobile align-center'>Show Navigation</a>
<div id='top-menus'>
<nav class='secondary-menu' id='secondary-menu'>
<ul>
<li><a href='https://grails.apache.org/casestudies/index.html'>Case Studies</a></li>
<li><a href='https://grails.apache.org/blog/index.html'>Blog</a></li>
<li><a href='https://grails.apache.org/learning.html'>Learning</a></li>
<li><a href='https://grails.apache.org/community.html'>Community</a></li>
<li><a href='https://grails.apache.org/search.html'>Search</a></li>
</ul>
</nav>
<nav class='main-menu' id='main-menu'>
<ul>
<li><a href='https://grails.apache.org/documentation.html'>Documentation</a></li>
<li><a href='https://grails.apache.org/download.html'>Download</a></li>
<li><a href='https://grails.apache.org/plugins.html'>Plugins</a></li>
<li><a href='https://grails.apache.org/guides'>Guides</a></li>
<li class='active'><a href='https://grails.apache.org/faq.html'>FAQ</a></li>
<li><a href='https://grails.apache.org/support.html'>Support</a></li>
<li><a href='https://start.grails.org'>Forge App</a></li>
</ul>
</nav>
</div>
</div>
</header>
<article><div class='header-bar chalices-bg'><div class='content'><h1>Questions</h1></div></div><div class='content'><article id='questions'><div class='question' id='question_opensource'><h2 class='column-header'>Is Apache Grails an Open Source project?</h2><p>Yes, Apache Grails is an Open Source project licensed under the
<a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License v2</a>.</p>
</div><div class='question' id='eccn'><h2 class='column-header'>What is the Export Control Classification Number (ECCN) for Grails?</h2><p>Grails is an open source technology that is not on the Commerce Control List,
and is therefore classified with the general purpose classification of EAR 99.</p>
</div><div class='question' id='question_learn'><h2 class='column-header'>What is the best way to learn about Grails?</h2><p>Read the <a href="/documentation.html">User Guide</a> for the version you are planning to use.
We recommend you start with the latest stable version of the framework. We have also
written a collection of <a href="https://grails.apache.org/guides">Guides</a>, which contain step-by-step
tutorials for solving common scenarios.</p>
</div><div class='question' id='question_training'><h2 class='column-header'>Do you offer Grails training?</h2><p>The Apache Software Foundation does not offer Grails Training.<br />
See <a href="/support.html">Commercial Support Options</a>.</p>
</div><div class='question' id='question_usage'><h2 class='column-header'>Where can I ask questions about usage?</h2><p>The best place to get community support is to use the <a href="/community.html">Apache Grails User mailing lists</a>.
Alternatively you can use <a href="https://github.com/apache/grails-core/discussions">GitHub Discussions</a> or
<a href="https://slack.grails.org">Slack</a> Grails Community Slack.</p>
</div><div class='question' id='question_socialmedia'><h2 class='column-header'>Where can I find Grails on social media?</h2><p>You can find Grails on <a href="https://x.com/grailsframework">X</a>
and <a href="https://www.linkedin.com/groups/39757">LinkedIn</a>.</p>
</div><div class='question' id='question_mailinglist'><h2 class='column-header'>Do you have a mailing list?</h2><p>Yes, there are a number of mailing lists at the ASF. Check the
<a href="/community.html">Community</a> page for more information</p>
</div><div class='question' id='question_feature'><h2 class='column-header'>Where can I suggest a new feature or share an interesting finding?</h2><p>The best place is to use the <a href="/community.html">Apache Grails Developer mailing lists</a>.</p>
<p>You can also join <a href="https://slack.grails.org">Grails Community Slack</a> which a great place
to start a conversation with the Grails developers and other Grails users.</p>
</div><div class='question' id='question_slack_vs_stackoverflow'><h2 class='column-header'>What is the difference between the mailing list, Slack and interaction on Stack Overflow?</h2><ul>
<li>Use the <a href="https://slack.grails.org">Grails Community Slack</a> for discussion around
the framework's development.</li>
<li>For questions we recommend to use the <a href="/community.html">Apache Grails User mailing lists</a>.</li>
<li><a href="https://stackoverflow.com/questions/tagged/grails">Stack Overflow</a> also contains long lived Q&amp;A.</li>
<li>Long lived discussions will occur on GitHub.</li>
</ul>
</div><div class='question' id='question_issue'><h2 class='column-header'>How do I report an issue with the Grails framework?</h2><p>The Grails project uses <a href="https://github.com/apache/grails-core/issues">GitHub issues</a>
to report and track issues, feature enhancements, and new features.
Make sure you're logged-in before proceeding.</p>
<p><a href="https://github.com/apache/grails-core/issues/new">Report an issue</a></p>
</div><div class='question' id='question_docs'><h2 class='column-header'>How can I contribute to improving the documentation?</h2><p>Grails documentation comes in several forms:</p>
<ul>
<li>The <a href="https://grails.apache.org/docs/latest/">reference documentation</a> contains language
specification, user guides, a getting started tutorial, and more.</li>
<li>The <a href="api.html">GroovyDoc APIs</a> documents the classes of the Grails code base.</li>
<li><a href="https://github.com/apache/grails-static-website">GitHub</a> allows users to contribute
to this website.</li>
</ul>
<p>Contributing to the documentation is fairly easy. Create a GitHub account or sign in
with an existing account, then go to the
<a href="https://grails.apache.org/docs/latest/">documentation website</a>
and select the &quot;Improve this doc&quot; button at the top of the page you wish to edit.</p>
<p>Please don't hesitate to help us make improvements, fix typos or broken language,
clarify complicated sections, add new material, and anything else you feel will be
helpful to other Grails users.</p>
</div><div class='question' id='question_code'><h2 class='column-header'>How can I contribute to Grails code?</h2><p>If you are looking to make an initial contribution, just raise your hand on the
<a href="/community.html">Apache Grails Developer mailing lists</a> and tell us about your desire
to work on a particular problem.</p>
<p>For more complicated tasks, the best approach is to bring your interest to the attention
of the Grails developers. They can provide guidance on how best to tackle a particular
problem, collaborate on implementation ideas, and discuss the semantics or scope of the
proposed change.</p>
<h3>Cloning the code base</h3>
<p>To work on the Grails code base, you should be proficient in <a href="https://git-scm.com/">Git</a>
and (ideally) have an account on <a href="https://github.com/">GitHub</a>, so you can create
<a href="https://help.github.com/articles/creating-a-pull-request">pull requests</a> with your changes.</p>
<p>If you have Git installed on your machine, you should be able to clone the Grails repository
with the following command:</p>
<pre><code>git clone git://github.com/apache/grails-core.git
</code></pre>
<p>Make sure you configure Git appropriately with the same email that you registered with on GitHub.</p>
<pre><code>git config --global user.name &quot;YOUR NAME&quot;
git config --global user.email &quot;YOUR EMAIL&quot;
</code></pre>
<p>You can verify these are configured appropriately by running:</p>
<pre><code>git config --list
</code></pre>
<h3>Working on the code base</h3>
<p>If you are working with the IntelliJ IDEA development environment, you can import the project using
the Intellij Gradle Tooling (&quot;File / Import Project&quot; and select the &quot;build.gradle&quot; file).</p>
<p>To get a local development version of Grails working, first run the install task.</p>
<pre><code>./gradlew assemble
./gradlew publishToMavenLocal
</code></pre>
<p>Then install <a href="https://sdkman.io">SDKman</a>, which is the quickest way to set up a development environment.</p>
<p>Once you have SDKman installed, point SDKman to your local development version of Grails.</p>
<pre><code>sdk install grails dev /path/to/checkout
sdk use grails dev
</code></pre>
<p>Now the &quot;grails&quot; command will be using your development version!</p>
<p>The most important command you will have to run before sending your changes is the check command.</p>
<pre><code>./gradlew check
</code></pre>
<p>For a successful contribution, all tests should be green!</p>
<h3>Creating a pull request</h3>
<p>Once you are satisfied with your changes:</p>
<ul>
<li>commit your changes in your local branch</li>
<li>push your changes to your remote branch on GitHub</li>
<li>send us a <a href="https://help.github.com/articles/creating-a-pull-request">pull request</a></li>
</ul>
</div><div class='question' id='question_develocity'><h2 class='column-header'>Where can I view the Develocity instance for the Grails framework?</h2><p>Our Develocity instance can be found at <a href="https://develocity.apache.org/scans?scanList.help=project&amp;search.rootProjectNames=grails*">https://develocity.apache.org/</a>.</p>
</div><div class='question' id='question_sponsors'><h2 class='column-header'>Who sponsors Grails development?</h2><p>The Apache Grails framework is a community driven effort, run under the
Apache Software Foundation.</p>
</div><div class='question' id='community_collective'><h2 class='column-header'>Can I help fund the development of Apache Grails?</h2><p>While the Apache Grails project does not accept direct funding, the community-run
<a href="https://opencollective.com/friends-of-grails">Friends of Grails</a> initiative supports
activities within the Apache Grails community.</p>
</div></article></div>&nbsp;</article>
<footer>
<div class='content'>
<div class='apache-grails'>
<p>Apache Grails is supported by the Apache Software Foundation and the Grails community.</p>
<a href='https://apache.org'><img src='https://www.apache.org/img/asf_logo.png' width='200px' alt='Apache Software Foundation'/></a>
<p>Apache, Apache Grails, Grails, Groovy, and the ASF logo are either registered trademarks or trademarks of The Apache Software Foundation.</p>
</div>
<nav class='social-media-nav'>
<ul>
<li><a href='mailto:dev@grails.apache.org'><img src='https://grails.apache.org/images/email.svg' alt='Email Icon'/></a></li>
<li><a href='https://slack.grails.org'><img src='https://grails.apache.org/images/slack.svg' alt='Slack Icon'/></a></li>
<li><a href='https://www.youtube.com/@GrailsFramework'><img src='https://grails.apache.org/images/youtube.svg' alt='Youtube Icon'/></a></li>
<li><a href='https://bsky.app/profile/grails.apache.org'><img src='https://grails.apache.org/images/bsky.svg' alt='Bluesky Icon'/></a></li>
<li><a rel="me" href="https://fosstodon.org/@grails"><img src='https://grails.apache.org/images/mastodont.svg' alt='Mastodon Icon'/></a></li>
<li><a href='https://www.linkedin.com/showcase/official-grails/'><img src='https://grails.apache.org/images/linkedin.svg' alt='LinkedIn Icon'/></a></li>
<li><a href='https://github.com/apache/grails-core'><img src='https://grails.apache.org/images/github.svg' alt='GitHub Icon'/></a></li>
<li><a href='https://twitter.com/grailsframework'><img src='https://grails.apache.org/images/x-twitter.svg' alt='Twitter Icon'/></a></li>
</ul>
</nav>
</div>
<div class='footer-bottom'>
<p>&copy; 2005-2026 the Apache Grails project</p>
<p>Grails is Open Source:
<a href='https://www.apache.org/licenses/'>License</a>,
<a href='https://privacy.apache.org/policies/privacy-policy-public.html'>Privacy Policy</a>,
<a href='https://www.apache.org/foundation/sponsorship'>Sponsor Apache</a>,
<a href='https://www.apache.org/events/current-event'>Events</a>,
<a href='https://www.apache.org/security'>Security</a>,
<a href='https://www.apache.org/foundation/thanks.html'>Thanks</a>,
<a href='https://grails.apache.org/support-schedule.html'>Support Schedule</a>
</p>
</div>
</footer>
</body>
</html>