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.
Join the DZone community and get the full member experience.
Join For FreeIn 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 run
task.
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
Published at DZone with permission of Hubert Klein Ikkink, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments