[SPRING] 스프링 부트로 Gradle.build 버전 가져 오기
SPRING스프링 부트로 Gradle.build 버전 가져 오기
내 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}"
내 응용 프로그램 버전, 봄 부팅 버전 등의 정보를 내 컨트롤러로 가져 오는 올바른 방법에 대한 제안 사항은 무엇입니까?
해결법
-
==============================
1.참조 문서에 설명 된대로 $ {version} 자리 표시자를 프로젝트 버전으로 대체 할 수 있도록 응용 프로그램의 리소스를 처리하도록 Gradle에 지시해야합니다.
참조 문서에 설명 된대로 $ {version} 자리 표시자를 프로젝트 버전으로 대체 할 수 있도록 응용 프로그램의 리소스를 처리하도록 Gradle에 지시해야합니다.
processResources { expand(project.properties) }
안전을 위해 application.properties 만 처리되도록 작업 범위를 좁힐 수 있습니다.
processResources { filesMatching('application.properties') { expand(project.properties) } }
이제 속성이 info.build.version이라고 가정하면 @Value를 통해 사용할 수 있습니다.
@Value("${info.build.version}")
-
==============================
2.application.yml에 다음을 추가하여이 문제를 해결했습니다.
application.yml에 다음을 추가하여이 문제를 해결했습니다.
${version?:unknown}
또한 cli : gradle bootRun과 IntelliJ에서 작동하며 IntelliJ에서 시작하기 전에 Gradle task processResources를 호출하거나 스프링 프로파일을 사용할 필요가 없습니다.
Gradle ver : 4.6 및 Spring Boot ver : 2.0.1.RELEASE의이 작업. 희망이 도움이;)
-
==============================
3.나는이 방법으로 그것을 해결했다. application.properties에서 info.build.version을 정의하십시오.
나는이 방법으로 그것을 해결했다. application.properties에서 info.build.version을 정의하십시오.
info.build.version=whatever
다음과 함께 구성 요소에서 사용하십시오.
@Value("${info.build.version}") private String version;
이제 다음과 같이 build.gradle 파일에 버전 정보를 추가하십시오.
version = '0.0.2-SNAPSHOT'
그런 다음 application.properties를 정규식으로 대체하여 메소드를 추가하여 버전 정보를 업데이트하십시오.
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() }
그게 다야. 이 솔루션은 IDE에서 Spring Boot 응용 프로그램을 실행하는 경우뿐만 아니라 Gradle에서 응용 프로그램을 컴파일하도록 할 경우에도 작동합니다. 값은 업데이트되지 않지만 예외가 발생하지 않으며 Gradle을 실행하자마자 다시 업데이트됩니다.
나는 이것이 다른 사람들을 도울뿐만 아니라 나를 위해 문제를 해결하기를 바랍니다. 더 적절한 솔루션을 찾을 수 없어서 혼자서 스크립트를 작성했습니다.
from https://stackoverflow.com/questions/34963056/getting-the-gradle-build-version-into-spring-boot by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring과 Thymeleaf를 사용한 로그 아웃 링크 (0) | 2019.04.16 |
---|---|
[SPRING] Spring 부트 2.0.0 이후의 "튜플과 앨리어스의 크기가 다릅니다"예외. (0) | 2019.04.16 |
[SPRING] Spring restTemplate은 raw json string을 얻는다. (0) | 2019.04.16 |
[SPRING] JUnit 테스트 (컨테이너 외부)에서 TransactionManager를 조롱하려면 어떻게해야합니까? (0) | 2019.04.16 |
[SPRING] SpringBoot - UTF-8은 messages.properties에서 작동하지 않습니다. (0) | 2019.04.16 |