整合 Actuator

產生建置資訊

Spring Boot Actuator 的 info 端點在存在 META-INF/build-info.properties 檔案時,會自動發布關於您建置的資訊。 提供了 BuildInfo 任務來產生此檔案。 使用此任務最簡單的方式是透過外掛程式的 DSL

  • Groovy

  • Kotlin

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

這將會配置一個名為 bootBuildInfoBuildInfo 任務,並且如果 Java 外掛程式的 classes 任務存在,則使其依賴於此任務。 此任務的目的地目錄將會是主要來源集資源的輸出目錄中的 META-INF (通常是 build/resources/main)。

預設情況下,產生的建置資訊來自於專案

屬性 預設值

build.artifact

bootJarbootWar 任務的基本名稱

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")
		}
	}
}

若要從產生的建置資訊中排除任何預設屬性,請將其名稱新增至 excludes。 例如,可以如下所示排除 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 延遲計算額外屬性的值。