Expand Gradle plugin's docs on setting bootRun's system properties
Closes gh-23578
This commit is contained in:
parent
4dad8c221a
commit
7ac14203ab
|
|
@ -92,9 +92,34 @@ See {gradle-api}/org/gradle/api/tasks/JavaExec.html#setArgsString-java.lang.Stri
|
||||||
[[running-your-application-passing-system-properties]]
|
[[running-your-application-passing-system-properties]]
|
||||||
=== Passing System properties to your application
|
=== Passing System properties to your application
|
||||||
Since `bootRun` is a standard `JavaExec` task, system properties can be passed to the application's JVM by specifying them in the build script.
|
Since `bootRun` is a standard `JavaExec` task, system properties can be passed to the application's JVM by specifying them in the build script.
|
||||||
The values can be parameterized and passed as properties on the command line using the `-P` flag.
|
To make that value of a system property to be configurable set its value using a {gradle-dsl}/org.gradle.api.Project.html#N14FE1[project property].
|
||||||
|
To allow a project property to be optional, reference it using `findProperty`.
|
||||||
|
Doing so also allows a default value to be provided using the `?:` Elvis operator, as shown in the following example:
|
||||||
|
|
||||||
See {gradle-api}/org/gradle/api/tasks/JavaExec.html#systemProperty-java.lang.String-java.lang.Object-[the javadoc for `JavaExec.systemProperty`] for further details.
|
[source,groovy,indent=0,subs="verbatim,attributes",role="primary"]
|
||||||
|
.Groovy
|
||||||
|
----
|
||||||
|
include::../gradle/running/boot-run-system-property.gradle[tags=system-property]
|
||||||
|
----
|
||||||
|
|
||||||
|
[source,kotlin,indent=0,subs="verbatim,attributes",role="secondary"]
|
||||||
|
.Kotlin
|
||||||
|
----
|
||||||
|
include::../gradle/running/boot-run-system-property.gradle.kts[tags=system-property]
|
||||||
|
----
|
||||||
|
|
||||||
|
The preceding example sets that `com.example.property` system property to the value of the `example` project property.
|
||||||
|
If the `example` project property has not been set, the value of the system property will be `default`.
|
||||||
|
|
||||||
|
Gradle allows project properties to be set in a variety of ways, including on the command line using the `-P` flag, as shown in the following example:
|
||||||
|
|
||||||
|
[source,bash,indent=0,subs="verbatim,attributes"]
|
||||||
|
----
|
||||||
|
$ ./gradlew -Pexample=custom
|
||||||
|
----
|
||||||
|
|
||||||
|
The preceding example sets the value of the `example` project property to `custom`.
|
||||||
|
`bootRun` will then use this as the value of the `com.example.property` system property.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
plugins {
|
||||||
|
id 'java'
|
||||||
|
id 'org.springframework.boot' version '{version}'
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::system-property[]
|
||||||
|
bootRun {
|
||||||
|
systemProperty 'com.example.property', findProperty('example') ?: 'default'
|
||||||
|
}
|
||||||
|
// end::system-property[]
|
||||||
|
|
||||||
|
task configuredSystemProperties {
|
||||||
|
doLast {
|
||||||
|
bootRun.systemProperties.each { k, v ->
|
||||||
|
println "$k = $v"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
import org.springframework.boot.gradle.tasks.run.BootRun
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
java
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::system-property[]
|
||||||
|
tasks.getByName<BootRun>("bootRun") {
|
||||||
|
systemProperty("com.example.property", findProperty("example") ?: "default")
|
||||||
|
}
|
||||||
|
// end::system-property[]
|
||||||
|
|
||||||
|
task("configuredSystemProperties") {
|
||||||
|
doLast {
|
||||||
|
tasks.getByName<BootRun>("bootRun").systemProperties.forEach { k, v ->
|
||||||
|
println("$k = $v")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2019 the original author or authors.
|
* Copyright 2012-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -68,4 +68,17 @@ class RunningDocumentationTests {
|
||||||
.build("optimizedLaunch").getOutput()).contains("false");
|
.build("optimizedLaunch").getOutput()).contains("false");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestTemplate
|
||||||
|
void bootRunSystemPropertyDefaultValue() throws IOException {
|
||||||
|
assertThat(this.gradleBuild.script("src/main/gradle/running/boot-run-system-property")
|
||||||
|
.build("configuredSystemProperties").getOutput()).contains("com.example.property = default");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestTemplate
|
||||||
|
void bootRunSystemPropetry() throws IOException {
|
||||||
|
assertThat(this.gradleBuild.script("src/main/gradle/running/boot-run-system-property")
|
||||||
|
.build("-Pexample=custom", "configuredSystemProperties").getOutput())
|
||||||
|
.contains("com.example.property = custom");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue