与 Actuator 集成
生成构建信息
Spring Boot Actuator 的 info
端点会在存在 META-INF/build-info.properties
文件时自动发布有关构建的信息。Spring Boot 提供了一个 BuildInfo 任务来生成此文件。使用该任务的最简单方法是通过插件的 DSL:
- Groovy
- Kotlin
springBoot {
buildInfo()
}
springBoot {
buildInfo()
}
这将配置一个名为 bootBuildInfo
的 BuildInfo 任务,并且如果存在 Java 插件的 classes
任务,将使其依赖于该任务。该任务的目标目录将是主资源集的输出目录中的 META-INF
(通常为 build/resources/main
)。
默认情况下,生成的构建信息来源于项目:
属性 | 默认值 |
---|---|
build.artifact | bootJar 或 bootWar 任务的基础名称 |
build.group | 项目的分组 |
build.name | 项目的名称 |
build.version | 项目的版本 |
build.time | 项目构建时的时间 |
可以通过 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")
}
}
}
要从生成的构建信息中排除任何默认属性,请将其名称添加到排除列表中。例如,可以按如下方式排除 time
属性:
- Groovy
- Kotlin
springBoot {
buildInfo {
excludes = ['time']
}
}
springBoot {
buildInfo {
excludes.set(setOf("time"))
}
}
build.time
的默认值是项目构建时的时刻。这带来的一个副作用是,该任务永远不会被标记为最新的。因此,构建将需要更长的时间,因为包括项目测试在内的更多任务将不得不执行。另一个副作用是,任务的输出将始终发生变化,因此构建将无法真正重复。如果你更重视构建性能或可重复性,而不是 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
来延迟计算附加属性的值。