与 Actuator 集成

生成构建信息

Spring Boot Actuator 的 info 端点在存在 META-INF/build-info.properties 文件时会自动发布有关你的构建信息。 提供了一个 BuildInfo 任务用于生成该文件。 使用插件 DSL 是最简单的方式:

  • Groovy

  • Kotlin

springBoot {
	buildInfo()
}
springBoot {
	buildInfo()
}

这将配置一个名为 bootBuildInfoBuildInfo 任务,并在存在时使 Java 插件的 classes 任务依赖于它。 该任务的目标目录将是主源码集资源输出目录(通常为 build/resources/main)下的 META-INF

默认情况下,生成的构建信息来源于项目:

属性 默认值

build.artifact

bootJarbootWar 任务的基本名称

build.group

项目的 group

build.name

项目的 name

build.version

项目的 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")
		}
	}
}

如需从生成的构建信息中排除任何默认属性,只需将其名称添加到 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 延迟计算。