Validating Grails Configurations

When externalizing grails app configurations for multiple environments I want to ensure values are provided for all the required/expected properties.  So I wrote a plugin to help.

Validating Expected and Required Properties

Simply add something like this to Config.groovy

validate  {
    required = [ "a", "b", "c" ]
    expected = [ "p":123, "d":"foobar", "q":"/dev/null" ]

Then (usually in BootStrap.groovy ) to set defaults for missing expected properties call


To check for required properties call


A ConfigurationException will be thrown when required properties are missing.

The validate.expected and validate.required data can be specified at lower levels too…

grails {
    mongo {
        validate {
            required = [
            expected = [
                "grails.mongo.port": 27017,
                "grails.mongo.bucket": "project"

This way you can validate portions of the config by calling


and so on.

Validating Existence of External Files

The ConfigUtils.validateExternalFiles method will check that a list of files does exist.  Use it like this in Config.groovy.

grails.config.locations << "file:${userHome}/.emacs"
grails.config.locations < "file:${userHome}/.grails/${appName}-config.groovy"

A `ConfigurationException` will be thrown when any of the files does not exist.



One thought on “Validating Grails Configurations

  1. amiller says:

    danmcharness pointed out that the sample app is not backward compatible with 2.1.4 or 2.0.4. So I created a couple new samples. Now github has example apps for 2.0.4, 2.1.4, and 2.2.1.

Leave a Reply

Your email address will not be published. Required fields are marked *