그래들 잡으러요Spring Boot에 빌드 버전
Spring Boot 응용 프로그램의 응용 프로그램 버전을 뷰에 표시하려고 합니다.이 버전 정보에 액세스할 수 있다고 확신하지만 방법을 알 수 없습니다.
저는 https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html,의 정보를 따르려고 했습니다.이 정보를 제 컴퓨터에 입력해 주세요.application.properties
:
info.build.version=${version}
그런 다음 로드합니다.@Value("${version.test}")
컨트롤러에서는 동작하지 않고, 다음과 같은 에러만 표시됩니다.
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'version' in string value "${version}"
앱 버전, 스프링 부트 버전 등의 정보를 컨트롤러로 가져오는 적절한 방법이 있습니까?
이 항목을 에 추가할 수도 있습니다.build.gradle
:
springBoot {
buildInfo()
}
그 다음에, 을 사용할 수 있습니다.BuildProperties
콩:
@Autowired
private BuildProperties buildProperties;
그리고 버전도 입수합니다.buildProperties.getVersion()
레퍼런스 매뉴얼에 기재되어 있는 바와 같이 Gradle에게 어플리케이션의 자원을 처리하도록 지시하여 어플리케이션의 자원을 대체하도록 할 필요가 있습니다.${version}
플레이스 홀더와 프로젝트 버전:
processResources {
expand(project.properties)
}
안전을 위해 범위를 좁혀서application.properties
처리되는 것은 처리됩니다.
processResources {
filesMatching('application.properties') {
expand(project.properties)
}
}
이제, 당신의 부동산이 이름지어졌다고 가정해 봅시다.info.build.version
, 다음에서 입수할 수 있습니다.@Value
:
@Value("${info.build.version}")
application.yml에 다음 항목을 추가하여 이 문제를 해결했습니다.
${version?:unknown}
cli:gradle boot Run 및 IntelliJ에서도 동작하며 IntelliJ에서 부팅하기 전에 Gradle 태스크 process Resources를 호출하거나 스프링 프로파일을 사용할 필요가 없습니다.
이 기능은 Gradle ver: 4.6 및 Spring Boot ver: 2.0.1에서 작동합니다.해방.도움이 되었으면 좋겠다;)
이 문제를 이렇게 해결했습니다.info.build.version
에application.properties
:
info.build.version=whatever
컴포넌트에서 사용
@Value("${info.build.version}")
private String version;
이제 버전 정보를 에 추가합니다.build.gradle
다음과 같은 파일:
version = '0.0.2-SNAPSHOT'
그런 다음 application.properties를 regex로 대체하고 버전 정보를 업데이트하는 메서드를 추가합니다.
def updateApplicationProperties() {
def configFile = new File('src/main/resources/application.properties')
println "updating version to '${version}' in ${configFile}"
String configContent = configFile.getText('UTF-8')
configContent = configContent.replaceAll(/info\.build\.version=.*/, "info.build.version=${version}")
configFile.write(configContent, 'UTF-8')
}
마지막으로 트리거할 때 메서드가 호출되는지 확인합니다.build
또는bootRun
:
allprojects {
updateVersion()
}
바로 그겁니다.이 솔루션은 Gradle이 앱을 컴파일하도록 하고 IDE에서 Spring Boot 앱을 실행하는 경우 작동합니다.값은 업데이트되지 않지만 예외가 발생하지는 않으며 Gradle을 실행하자마자 다시 업데이트됩니다.
이것이 나에게 문제를 해결해 줄 뿐만 아니라 다른 사람들에게도 도움이 되었으면 좋겠다.나는 더 적절한 해결책을 찾을 수 없어서 스스로 대본을 썼다.
언급URL : https://stackoverflow.com/questions/34963056/getting-the-gradle-build-version-into-spring-boot
'programing' 카테고리의 다른 글
Oracle jdbc 드라이버 클래스의 차이점 (0) | 2023.02.26 |
---|---|
'TS2532: Object is undefined' 오류를 해결하려면 어떻게 해야 합니까? (0) | 2023.02.26 |
JSON에 대한 PDOStainment (0) | 2023.02.26 |
MongoDB의 정확한 요소 배열 필드 업데이트 (0) | 2023.02.26 |
하위 React 구성 요소에서 상위 메서드를 호출하려면 어떻게 해야 합니까? (0) | 2023.02.26 |