与 Actuator 集成
生成构建信息
Spring Boot Actuator 的 info
端点在存在 META-INF/build-info.properties
文件时会自动发布有关你的构建信息。
提供了一个 BuildInfo
任务用于生成该文件。
使用插件 DSL 是最简单的方式:
-
Groovy
-
Kotlin
springBoot {
buildInfo()
}
springBoot {
buildInfo()
}
这将配置一个名为 bootBuildInfo
的 BuildInfo
任务,并在存在时使 Java 插件的 classes
任务依赖于它。
该任务的目标目录将是主源码集资源输出目录(通常为 build/resources/main
)下的 META-INF
。
默认情况下,生成的构建信息来源于项目:
属性 | 默认值 |
---|---|
|
|
|
项目的 group |
|
项目的 name |
|
项目的 version |
|
项目构建时的时间 |
可以通过 DSL 自定义这些属性:
-
Groovy
-
Kotlin
springBoot {
buildInfo {
properties {
artifact = 'example-app'
version = '1.2.3'
group = 'com.example'
name = 'Example application'
}
}
}
springBoot {
buildInfo {
properties {
artifact.set("example-app")
version.set("1.2.3")
group.set("com.example")
name.set("Example application")
}
}
}
如需从生成的构建信息中排除任何默认属性,只需将其名称添加到 excludes。例如,可以如下排除 time
属性:
-
Groovy
-
Kotlin
springBoot {
buildInfo {
excludes = ['time']
}
}
springBoot {
buildInfo {
excludes.set(setOf("time"))
}
}
build.time
的默认值是项目构建时的时间。
其副作用是该任务永远不会 up-to-date。
因此,构建会变慢,因为包括项目测试在内的更多任务都需要执行。
另一个副作用是该任务的输出总会变化,因此构建无法真正实现可重复性。
如果你更看重构建性能或可重复性而不是 build.time
属性的准确性,请如上例所示排除 time 属性。
还可以向构建信息中添加额外属性:
-
Groovy
-
Kotlin
springBoot {
buildInfo {
properties {
additional = [
'a': 'alpha',
'b': 'bravo'
]
}
}
}
springBoot {
buildInfo {
properties {
additional.set(mapOf(
"a" to "alpha",
"b" to "bravo"
))
}
}
}
额外属性的值可以通过 Provider
延迟计算。