Make consistent use of Property for Gradle task configuration

Closes gh-32769
This commit is contained in:
Andy Wilkinson
2022-10-19 17:29:46 +01:00
parent e5c12c2b56
commit 8621be6bba
60 changed files with 554 additions and 960 deletions

View File

@@ -60,13 +60,27 @@ include::../gradle/integrating-with-actuator/build-info-custom-values.gradle[tag
include::../gradle/integrating-with-actuator/build-info-custom-values.gradle.kts[tags=custom-values]
----
NOTE: To omit any of the default properties from the generated build information, set its value to `null`.
To exclude any of the default properties from the generated build information, add its name to the excludes.
For example, the `time` property can be excluded as follows:
[source,groovy,indent=0,subs="verbatim,attributes",role="primary"]
.Groovy
----
include::../gradle/integrating-with-actuator/build-info-exclude-time.gradle[tags=exclude-time]
----
[source,kotlin,indent=0,subs="verbatim,attributes",role="secondary"]
.Kotlin
----
include::../gradle/integrating-with-actuator/build-info-exclude-time.gradle.kts[tags=exclude-time]
----
The default value for `build.time` is the instant at which the project is being built.
A side-effect of this is that the task will never be up-to-date.
As a result, builds will take longer as more tasks, including the project's tests, will have to be executed.
Another side-effect is that the task's output will always change and, therefore, the build will not be truly repeatable.
If you value build performance or repeatability more highly than the accuracy of the `build.time` property, set `time` to `null` or a fixed value.
If you value build performance or repeatability more highly than the accuracy of the `build.time` property, exclude the `time` property as shown in the preceding example.
Additional properties can also be added to the build information:

View File

@@ -7,10 +7,10 @@ plugins {
springBoot {
buildInfo {
properties {
additional = mapOf(
additional.set(mapOf(
"a" to "alpha",
"b" to "bravo"
)
))
}
}
}

View File

@@ -7,10 +7,10 @@ plugins {
springBoot {
buildInfo {
properties {
artifact = "example-app"
version = "1.2.3"
group = "com.example"
name = "Example application"
artifact.set("example-app")
version.set("1.2.3")
group.set("com.example")
name.set("Example application")
}
}
}

View File

@@ -0,0 +1,12 @@
plugins {
id 'java'
id 'org.springframework.boot' version '{gradle-project-version}'
}
// tag::exclude-time[]
springBoot {
buildInfo {
excludes = ['time']
}
}
// end::exclude-time[]

View File

@@ -0,0 +1,12 @@
plugins {
java
id("org.springframework.boot") version "{gradle-project-version}"
}
// tag::exclude-time[]
springBoot {
buildInfo {
excludes.set(setOf("time"))
}
}
// end::exclude-time[]

View File

@@ -16,7 +16,7 @@ tasks.named("bootBuildImage") {
tasks.register("bootBuildImageBuilder") {
doFirst {
println("builder=${tasks.bootBuildImage.builder}")
println("runImage=${tasks.bootBuildImage.runImage}")
println("builder=${tasks.bootBuildImage.builder.get()}")
println("runImage=${tasks.bootBuildImage.runImage.get()}")
}
}

View File

@@ -12,14 +12,14 @@ tasks.named<BootJar>("bootJar") {
// tag::builder[]
tasks.named<BootBuildImage>("bootBuildImage") {
builder = "mine/java-cnb-builder"
runImage = "mine/java-cnb-run"
builder.set("mine/java-cnb-builder")
runImage.set("mine/java-cnb-run")
}
// end::builder[]
tasks.register("bootBuildImageBuilder") {
doFirst {
println("builder=${tasks.getByName<BootBuildImage>("bootBuildImage").builder}")
println("runImage=${tasks.getByName<BootBuildImage>("bootBuildImage").runImage}")
println("builder=${tasks.getByName<BootBuildImage>("bootBuildImage").builder.get()}")
println("runImage=${tasks.getByName<BootBuildImage>("bootBuildImage").runImage.get()}")
}
}

View File

@@ -11,6 +11,6 @@ tasks.named("bootBuildImage") {
tasks.register("bootBuildImageBuildpacks") {
doFirst {
bootBuildImage.buildpacks.each { reference -> println "$reference" }
bootBuildImage.buildpacks.get().each { reference -> println "$reference" }
}
}

View File

@@ -7,13 +7,13 @@ plugins {
// tag::buildpacks[]
tasks.named<BootBuildImage>("bootBuildImage") {
buildpacks = listOf("file:///path/to/example-buildpack.tgz", "urn:cnb:builder:paketo-buildpacks/java")
buildpacks.set(listOf("file:///path/to/example-buildpack.tgz", "urn:cnb:builder:paketo-buildpacks/java"))
}
// end::buildpacks[]
tasks.register("bootBuildImageBuildpacks") {
doFirst {
for(reference in tasks.getByName<BootBuildImage>("bootBuildImage").buildpacks) {
for(reference in tasks.getByName<BootBuildImage>("bootBuildImage").buildpacks.get()) {
print(reference)
}
}

View File

@@ -9,12 +9,12 @@ plugins {
tasks.named<BootBuildImage>("bootBuildImage") {
buildCache {
volume {
name = "cache-${rootProject.name}.build"
name.set("cache-${rootProject.name}.build")
}
}
launchCache {
volume {
name = "cache-${rootProject.name}.launch"
name.set("cache-${rootProject.name}.launch")
}
}
}

View File

@@ -19,6 +19,6 @@ tasks.named("bootBuildImage") {
tasks.register("bootBuildImageDocker") {
doFirst {
println("token=${tasks.bootBuildImage.docker.builderRegistry.token}")
println("token=${tasks.bootBuildImage.docker.builderRegistry.token.get()}")
}
}

View File

@@ -14,7 +14,7 @@ tasks.named<BootJar>("bootJar") {
tasks.named<BootBuildImage>("bootBuildImage") {
docker {
builderRegistry {
token = "9cbaf023786cd7..."
token.set("9cbaf023786cd7...")
}
}
}
@@ -22,6 +22,6 @@ tasks.named<BootBuildImage>("bootBuildImage") {
tasks.register("bootBuildImageDocker") {
doFirst {
println("token=${tasks.getByName<BootBuildImage>("bootBuildImage").docker.builderRegistry.token}")
println("token=${tasks.getByName<BootBuildImage>("bootBuildImage").docker.builderRegistry.token.get()}")
}
}

View File

@@ -22,9 +22,9 @@ tasks.named("bootBuildImage") {
tasks.register("bootBuildImageDocker") {
doFirst {
println("username=${tasks.bootBuildImage.docker.builderRegistry.username}")
println("password=${tasks.bootBuildImage.docker.builderRegistry.password}")
println("url=${tasks.bootBuildImage.docker.builderRegistry.url}")
println("email=${tasks.bootBuildImage.docker.builderRegistry.email}")
println("username=${tasks.bootBuildImage.docker.builderRegistry.username.get()}")
println("password=${tasks.bootBuildImage.docker.builderRegistry.password.get()}")
println("url=${tasks.bootBuildImage.docker.builderRegistry.url.get()}")
println("email=${tasks.bootBuildImage.docker.builderRegistry.email.get()}")
}
}

View File

@@ -14,10 +14,10 @@ tasks.named<BootJar>("bootJar") {
tasks.named<BootBuildImage>("bootBuildImage") {
docker {
builderRegistry {
username = "user"
password = "secret"
url = "https://docker.example.com/v1/"
email = "user@example.com"
username.set("user")
password.set("secret")
url.set("https://docker.example.com/v1/")
email.set("user@example.com")
}
}
}
@@ -25,9 +25,9 @@ tasks.named<BootBuildImage>("bootBuildImage") {
tasks.register("bootBuildImageDocker") {
doFirst {
println("username=${tasks.getByName<BootBuildImage>("bootBuildImage").docker.builderRegistry.username}")
println("password=${tasks.getByName<BootBuildImage>("bootBuildImage").docker.builderRegistry.password}")
println("url=${tasks.getByName<BootBuildImage>("bootBuildImage").docker.builderRegistry.url}")
println("email=${tasks.getByName<BootBuildImage>("bootBuildImage").docker.builderRegistry.email}")
println("username=${tasks.getByName<BootBuildImage>("bootBuildImage").docker.builderRegistry.username.get()}")
println("password=${tasks.getByName<BootBuildImage>("bootBuildImage").docker.builderRegistry.password.get()}")
println("url=${tasks.getByName<BootBuildImage>("bootBuildImage").docker.builderRegistry.url.get()}")
println("email=${tasks.getByName<BootBuildImage>("bootBuildImage").docker.builderRegistry.email.get()}")
}
}

View File

@@ -18,7 +18,7 @@ tasks.named("bootBuildImage") {
tasks.register("bootBuildImageDocker") {
doFirst {
println("host=${tasks.bootBuildImage.docker.host}")
println("bindHostToBuilder=${tasks.bootBuildImage.docker.bindHostToBuilder}")
println("host=${tasks.bootBuildImage.docker.host.get()}")
println("bindHostToBuilder=${tasks.bootBuildImage.docker.bindHostToBuilder.get()}")
}
}

View File

@@ -13,15 +13,15 @@ tasks.named<BootJar>("bootJar") {
// tag::docker-host[]
tasks.named<BootBuildImage>("bootBuildImage") {
docker {
host = "unix:///run/user/1000/podman/podman.sock"
isBindHostToBuilder = true
host.set("unix:///run/user/1000/podman/podman.sock")
bindHostToBuilder.set(true)
}
}
// end::docker-host[]
tasks.register("bootBuildImageDocker") {
doFirst {
println("host=${tasks.getByName<BootBuildImage>("bootBuildImage").docker.host}")
println("bindHostToBuilder=${tasks.getByName<BootBuildImage>("bootBuildImage").docker.isBindHostToBuilder}")
println("host=${tasks.getByName<BootBuildImage>("bootBuildImage").docker.host.get()}")
println("bindHostToBuilder=${tasks.getByName<BootBuildImage>("bootBuildImage").docker.bindHostToBuilder.get()}")
}
}

View File

@@ -19,8 +19,8 @@ tasks.named("bootBuildImage") {
tasks.register("bootBuildImageDocker") {
doFirst {
println("host=${tasks.bootBuildImage.docker.host}")
println("tlsVerify=${tasks.bootBuildImage.docker.tlsVerify}")
println("certPath=${tasks.bootBuildImage.docker.certPath}")
println("host=${tasks.bootBuildImage.docker.host.get()}")
println("tlsVerify=${tasks.bootBuildImage.docker.tlsVerify.get()}")
println("certPath=${tasks.bootBuildImage.docker.certPath.get()}")
}
}

View File

@@ -13,17 +13,17 @@ tasks.named<BootJar>("bootJar") {
// tag::docker-host[]
tasks.named<BootBuildImage>("bootBuildImage") {
docker {
host = "tcp://192.168.99.100:2376"
isTlsVerify = true
certPath = "/home/user/.minikube/certs"
host.set("tcp://192.168.99.100:2376")
tlsVerify.set(true)
certPath.set("/home/user/.minikube/certs")
}
}
// end::docker-host[]
tasks.register("bootBuildImageDocker") {
doFirst {
println("host=${tasks.getByName<BootBuildImage>("bootBuildImage").docker.host}")
println("tlsVerify=${tasks.getByName<BootBuildImage>("bootBuildImage").docker.isTlsVerify}")
println("certPath=${tasks.getByName<BootBuildImage>("bootBuildImage").docker.certPath}")
println("host=${tasks.getByName<BootBuildImage>("bootBuildImage").docker.host.get()}")
println("tlsVerify=${tasks.getByName<BootBuildImage>("bootBuildImage").docker.tlsVerify.get()}")
println("certPath=${tasks.getByName<BootBuildImage>("bootBuildImage").docker.certPath.get()}")
}
}

View File

@@ -14,6 +14,6 @@ tasks.named("bootBuildImage") {
tasks.register("bootBuildImageEnvironment") {
doFirst {
bootBuildImage.environment.each { name, value -> println "$name=$value" }
bootBuildImage.environment.get().each { name, value -> println "$name=$value" }
}
}

View File

@@ -7,14 +7,14 @@ plugins {
// tag::env[]
tasks.named<BootBuildImage>("bootBuildImage") {
environment = mapOf("HTTP_PROXY" to "http://proxy.example.com",
"HTTPS_PROXY" to "https://proxy.example.com")
environment.set(mapOf("HTTP_PROXY" to "http://proxy.example.com",
"HTTPS_PROXY" to "https://proxy.example.com"))
}
// end::env[]
tasks.register("bootBuildImageEnvironment") {
doFirst {
for((name, value) in tasks.getByName<BootBuildImage>("bootBuildImage").environment) {
for((name, value) in tasks.getByName<BootBuildImage>("bootBuildImage").environment.get()) {
print(name + "=" + value)
}
}

View File

@@ -18,6 +18,6 @@ tasks.named("bootBuildImage") {
tasks.register("bootBuildImageEnvironment") {
doFirst {
bootBuildImage.environment.each { name, value -> println "$name=$value" }
bootBuildImage.environment.get().each { name, value -> println "$name=$value" }
}
}

View File

@@ -7,16 +7,16 @@ plugins {
// tag::env-runtime[]
tasks.named<BootBuildImage>("bootBuildImage") {
environment = mapOf(
environment.set(mapOf(
"BPE_DELIM_JAVA_TOOL_OPTIONS" to " ",
"BPE_APPEND_JAVA_TOOL_OPTIONS" to "-XX:+HeapDumpOnOutOfMemoryError"
)
))
}
// end::env-runtime[]
tasks.register("bootBuildImageEnvironment") {
doFirst {
for((name, value) in tasks.getByName<BootBuildImage>("bootBuildImage").environment) {
for((name, value) in tasks.getByName<BootBuildImage>("bootBuildImage").environment.get()) {
print(name + "=" + value)
}
}

View File

@@ -11,6 +11,6 @@ tasks.named("bootBuildImage") {
tasks.register("bootBuildImageEnvironment") {
doFirst {
bootBuildImage.environment.each { name, value -> println "$name=$value" }
bootBuildImage.environment.get().each { name, value -> println "$name=$value" }
}
}

View File

@@ -7,13 +7,13 @@ plugins {
// tag::env[]
tasks.named<BootBuildImage>("bootBuildImage") {
environment = mapOf("BP_JVM_VERSION" to "8.*")
environment.set(mapOf("BP_JVM_VERSION" to "8.*"))
}
// end::env[]
tasks.register("bootBuildImageEnvironment") {
doFirst {
for((name, value) in tasks.getByName<BootBuildImage>("bootBuildImage").environment) {
for((name, value) in tasks.getByName<BootBuildImage>("bootBuildImage").environment.get()) {
print(name + "=" + value)
}
}

View File

@@ -11,6 +11,6 @@ tasks.named("bootBuildImage") {
tasks.register("bootBuildImageName") {
doFirst {
println(tasks.bootBuildImage.imageName)
println(tasks.bootBuildImage.imageName.get())
}
}

View File

@@ -7,12 +7,12 @@ plugins {
// tag::image-name[]
tasks.named<BootBuildImage>("bootBuildImage") {
imageName = "example.com/library/${project.name}"
imageName.set("example.com/library/${project.name}")
}
// end::image-name[]
tasks.register("bootBuildImageName") {
doFirst {
println(tasks.getByName<BootBuildImage>("bootBuildImage").imageName)
println(tasks.getByName<BootBuildImage>("bootBuildImage").imageName.get())
}
}

View File

@@ -9,7 +9,7 @@ tasks.named("bootJar") {
// tag::publish[]
tasks.named("bootBuildImage") {
imageName = "docker.example.com/library/${project.name}"
imageName.set("docker.example.com/library/${project.name}")
publish = true
docker {
publishRegistry {
@@ -22,6 +22,6 @@ tasks.named("bootBuildImage") {
tasks.register("bootBuildImagePublish") {
doFirst {
println(tasks.bootBuildImage.publish)
println(tasks.bootBuildImage.publish.get())
}
}

View File

@@ -12,12 +12,12 @@ tasks.named<BootJar>("bootJar") {
// tag::publish[]
tasks.named<BootBuildImage>("bootBuildImage") {
imageName = "docker.example.com/library/${project.name}"
isPublish = true
imageName.set("docker.example.com/library/${project.name}")
publish.set(true)
docker {
publishRegistry {
username = "user"
password = "secret"
username.set("user")
password.set("secret")
}
}
}
@@ -25,6 +25,6 @@ tasks.named<BootBuildImage>("bootBuildImage") {
tasks.register("bootBuildImagePublish") {
doFirst {
println(tasks.getByName<BootBuildImage>("bootBuildImage").isPublish)
println(tasks.getByName<BootBuildImage>("bootBuildImage").publish.get())
}
}

View File

@@ -24,7 +24,7 @@ tasks.named<BootJar>("bootJar") {
}
intoLayer("dependencies")
}
layerOrder = listOf("dependencies", "spring-boot-loader", "snapshot-dependencies", "application")
layerOrder.set(listOf("dependencies", "spring-boot-loader", "snapshot-dependencies", "application"))
}
}
// end::layered[]

View File

@@ -12,7 +12,7 @@ tasks.named<BootJar>("bootJar") {
// tag::layered[]
tasks.named<BootJar>("bootJar") {
layered {
isEnabled = false
enabled.set(false)
}
}
// end::layered[]

View File

@@ -12,7 +12,7 @@ tasks.named<BootJar>("bootJar") {
// tag::layered[]
tasks.named<BootJar>("bootJar") {
layered {
isIncludeLayerTools = false
includeLayerTools.set(false)
}
}
// end::layered[]

View File

@@ -11,6 +11,6 @@ tasks.named("bootRun") {
tasks.register("optimizedLaunch") {
doLast {
println bootRun.optimizedLaunch
println bootRun.optimizedLaunch.get()
}
}

View File

@@ -7,12 +7,12 @@ plugins {
// tag::launch[]
tasks.named<BootRun>("bootRun") {
isOptimizedLaunch = false
optimizedLaunch.set(false)
}
// end::launch[]
tasks.register("optimizedLaunch") {
doLast {
println(tasks.getByName<BootRun>("bootRun").isOptimizedLaunch)
println(tasks.getByName<BootRun>("bootRun").optimizedLaunch.get())
}
}