Over a million developers have joined DZone.

Passing System Properties With Gradle

DZone's Guide to

Passing System Properties With Gradle

How to pass Java system properties from the command-line to a Java process in a Gradle build file using Grails 3.

· DevOps Zone ·
Free Resource

Easily enforce open source policies in real time and reduce MTTRs from six weeks to six seconds with the Sonatype Nexus Platform. See for yourself - Free Vulnerability Scanner. 

In a previous post we learned how to pass Java system properties from the command-line to a Java process defined in a Gradle build file. Because Grails 3 uses Gradle as the build tool we can apply the same mechanism in our Grails application. We need to reconfigure the run task. This task is of typeJavaExec and we can use the method systemProperties to assign the system properties we define on the command-line when we invoke the runtask.

We have a simple Grails 3 application with the following controller that tries to access the Java system property sample.message:

// File: grails-app/controllers/com/mrhaki/grails/SampleController.groovy
package com.mrhaki.grails

class SampleController {

    def index() {
        final String message =
            System.properties['sample.message'] ?: 'gr8'
        render "Grails is ${message}!"
Next we configure the  run and  bootRun tasks and use  System.properties with the Java system properties from the command-line as argument for the  systemProperties method:

// File: build.gradle

[run, bootRun].each { runTask ->
    configure(runTask) {
        systemProperties System.properties


Now we can invoke the run or bootRun tasks with Gradle:

$ gradle -Dsample.message=cool run

Or we can execute the run-app command with the grails command:

grails> run-app -Dsample.message=cool

Automate open source governance at scale across the entire software supply chain with the Nexus Platform. Learn more.

gradle ,grails ,devops ,build tool

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}