With Grails 3 we can create a so-called fat jar or war file. To run our application we only have to use
java -jar followed by our archive file name and the application starts. Another option is to create a fully executable jar or war file, which adds a shell script in front of the jar or war file so we can immediately run the jar or war file. We don’t have to use
java -jar anymore to run our Grails application. The fully executable JAR file can only run on Unix-like systems and it is ready to be used as service using
In a previous post we learned how to add Git commit information to the
/info endpoint in our Grails application. We can add our own custom information to this endpoint by defining application properties that start with
We know Grails 3 is based on Spring Boot. This means we can use Spring Boot features in our Grails application. For example a default Grails application has a dependency on Spring Boot Actuator, which means we have a
/info endpoint when we start the application. We add the Git commit id and branch to the
/info endpoint so we can see which Git commit was used to create the running application.
Grails 3 makes it very easy to create a JAR file that is runnable with a simple
$java -jar command. We must use the Grails command
package or the Gradle task
assemble to package our application as a so-called runnable JAR file. This JAR file has all the necessary classes to start up our Grails application.
Grails 3 introduced the concept of application profiles to Grails. A profile contains the application structure, dependencies, commands and more to configure Grails for a specific type of application. The profiles are stored on the Grails Profile repository on Github. We can go there and see which profiles are available, but it is much easier to use the
list-profiles command. With this command we get an overview of all the available profiles we can use to create a new application or plugin.
To start Grails in interactive mode we simply type
grails on the command line. This starts Grails and we get an environment to run Grails commands like
run-app. Since Grails 3 the underlying build system has changed from Gant to Gradle. We can invoke Gradle tasks in interactive mode with the
gradle command. Just like we would use Gradle from the command line we can run the same tasks, but this time when Grails is in interactive mode. Grails will use the Gradle version that belongs to the current Grails version.
We even get TAB completion for Gradle tasks.
In this blog post we see how to update the Grails version of our application for a Grails 3 application. In previous Grails versions there was a special command to upgrade, but with Grails 3 it is much simpler. To update an application to a newer version in the Grails 3.0.x range we only have to change the value of the property
grailsVersion in the file
After we have changed the value we run the
compile tasks so all dependencies are up-to-date.
Written with Grails 3.0.8.
Since Grails 3 the logging configuration is in a separate file. Before Grails 3 we could specify the logging configuration in
grails-app/conf/Config.groovy, since Grails 3 it is in the file
grails-app/conf/logback.groovy. We also notice that since Grails 3 the default logging framework implementation is Logback. We can define a different Logback configuration file with the environment configuration property
logging.config. We can set this property in
grails-app/conf/application.yml, as Java system property (
-Dlogging.config=<location>) or environment variable (
LOGGING_CONFIG). Actually all rules for external configuration of Spring Boot apply for the configuration property
With Grails 3 we get the Spring Boot mechanism for loading external configuration files. The default base name for configuration files is
application. Grails creates for example the file
grails-app/conf/application.yml to store configuration values if we use the
create-app command. To change the base name from
application to something else we must specify a value for the Java system property
A Grails 3 application uses the same mechanism to load external configuration files as a Spring Boot application. This means the default locations are the root directory or
config/ directory in the class path and on the file system. If we want to specify a new directory to search for configuration files or specify the configuration files explicitly we can use the Java system property