8. Integrating with Actuator
8.1. Generating Build Information
스프링 부트 액추에이터(Actuator)의 info
엔드포인트는 META-INF/build-info.properties
파일이 있는 빌드에 대한 정보를 자동으로 게시한다. 이 파일을 생성하기 위해 BuildInfo
태스크가 제공된다. 태스크를 사용하는 가장 쉬운 방법은 플러그인의 DSL을 이용하는 것이다:
Groovy
springBoot {
buildInfo()
}
Kotlin
springBoot {
buildInfo()
}
이것은 bootBuildInfo
라는 이름의 BuildInfo
태스크를 구성하고, 존재하는 경우 Java 플러그인의 classes
태스크가 이에 의존하도록 한다. 태스크의 대상 디렉토리는 기본 소스 세트 리소스(일반적으로 build/resources/main
)의 출력 디렉토리에 있는 META-INF
이다.
기본적으로, 생성된 빌드 정보는 프로젝트에서 파생된다.
프로퍼티 | 기본 값 |
---|---|
build.artifact | bootJar 또는 bootWar 작업의 기본 이름 |
build.group | 프로젝트 그룹 |
build.name | 프로젝트 이름 |
build.version | 프로젝트 버전 |
build.time | 프로젝트 빌드 시간 |
프로퍼티스는 DSL을 사용하여 사용자 지정할 수 있다:
Groovy
springBoot {
buildInfo {
properties {
artifact = 'example-app'
version = '1.2.3'
group = 'com.example'
name = 'Example application'
}
}
}
Kotlin
springBoot {
buildInfo {
properties {
artifact = "example-app"
version = "1.2.3"
group = "com.example"
name = "Example application"
}
}
}
생성된 빌드 정보에서 기본 프로퍼티를 생략하려면, 해당 값을
null
로 설정한다.
build.time
의 기본값은 프로젝트가 빌드되는 순간이다. 이것의 부작용(side-effect)은 태스크가 항상 최신 상태가 아니라는 것이다. 결과적으로, 프로젝트 테스트를 포함하여 더 많은 태스크를 실행해야 하므로 빌드 시간이 더 오래 걸린다. 또 다른 부작용은 작업의 출력이 항상 변경되므로 빌드를 실제로 반복할 수 없다는 것이다. build.time
프로퍼티의 정확도보다 빌드 성능이나 반복성을 중요하게 생각하는 경우, time
을 null
또는 고정 값으로 설정하자.
추가 프로퍼티를 빌드 정보에 추가할 수도 있다:
Groovy
springBoot {
buildInfo {
properties {
additional = [
'a': 'alpha',
'b': 'bravo'
]
}
}
}
Kotlin
springBoot {
buildInfo {
properties {
additional = mapOf(
"a" to "alpha",
"b" to "bravo"
)
}
}
}