Spring Boot 애플리케이션에 빌드 속성 추가

1. 소개

일반적으로 프로젝트의 빌드 구성에는 애플리케이션에 대한 많은 정보가 포함되어 있습니다. 이 정보 중 일부는 응용 프로그램 자체에 필요할 수 있습니다. 따라서이 정보를 하드 코딩하는 대신 기존 빌드 구성에서 사용할 수 있습니다.

이 기사에서는 Spring Boot 애플리케이션에서 프로젝트의 빌드 구성 정보를 사용하는 방법을 살펴 봅니다.

2. 빌드 정보

웹 사이트의 홈페이지에 애플리케이션 설명과 버전을 표시하고 싶다고 가정 해 보겠습니다.

일반적으로이 정보는 pom.xml에 있습니다 .

 4.0.0 spring-boot spring-boot war This is simple boot application for Spring boot actuator test 0.0.1-SNAPSHOT ... 

3. 응용 프로그램 속성 파일의 정보 참조

이제 애플리케이션에서 위의 정보를 사용하려면 먼저 애플리케이션 속성 파일 중 하나에서 해당 정보를 참조해야합니다.

[email protected]@ [email protected]@

여기에서는 빌드 속성 project.description 의 값을 사용 하여 애플리케이션 속성 application-description 을 설정했습니다 . 마찬가지로 application-versionproject.version을 사용하여 설정됩니다 .

여기서 가장 중요한 부분 은 속성 이름 주위에 @ 문자를 사용하는 것입니다 . 이것은 Spring이 Maven 프로젝트에서 명명 된 속성을 확장하도록 지시합니다.

이제 프로젝트를 빌드 할 때 이러한 속성이 pom.xml 의 값으로 대체됩니다 .

이 확장을 리소스 필터링이라고도합니다. 이러한 종류의 필터링은 프로덕션 구성에만 적용된다는 점은 주목할 가치가 있습니다 . 따라서 src / test / resources 아래의 파일에서 빌드 속성을 사용할 수 없습니다 .

주목해야 할 또 다른 점은 addResources 플래그를 사용하면 spring-boot : run 목표가 src / main / resources 를 클래스 경로에 직접 추가한다는 것 입니다. 이는 핫 리로딩 목적에 유용하지만 리소스 필터링 및 결과적으로이 기능을 우회합니다.

이제 위의 속성 확장은 spring-boot-starter-parent를 사용하는 경우에만 기본적으로 작동합니다 .

3.1. spring-boot-starter-parent 없이 속성 확장

spring-boot-starter-parent 종속성 을 사용하지 않고이 기능을 활성화하는 방법을 살펴 보겠습니다 .

먼저, 내부 리소스 필터링을 활성화해야합니다. pom.xml의 요소 :

  src/main/resources true  

여기에서는 src / main / resources 에서만 리소스 필터링을 활성화했습니다 .

그런 다음 maven-resources-plugin에 대한 구분 기호 구성을 추가 할 수 있습니다 .

 org.apache.maven.plugins maven-resources-plugin   @  false  

useDefaultDelimiters 속성을 false 로 지정했습니다 . 이렇게하면 $ {placeholder}와 같은 표준 Spring 자리 표시자가 빌드에 의해 확장되지 않습니다.

4. YAML 파일에서 빌드 정보 사용

YAML을 사용하여 애플리케이션 속성을 저장 하는 경우 @ 를 사용하여 빌드 속성을 지정 하지 못할 수 있습니다 . @ 가 YAML에서 예약 된 문자 이기 때문 입니다.

그러나 maven-resources-plugin 에서 다른 구분 기호를 구성하여 이를 극복 할 수 있습니다 .

 org.apache.maven.plugins maven-resources-plugin   ^  false  

또는 간단하여 최우선 resource.delimiter의 속성 블록의 특성 우리의 pom.xml 파일을 :

 ^ 

그런 다음 YAML 파일에서 ^ 를 사용할 수 있습니다 .

application-description: ^project.description^ application-version: ^project.version^

5. 결론

이 기사에서는 애플리케이션에서 Maven 프로젝트 정보를 사용하는 방법을 살펴 보았습니다. 이를 통해 애플리케이션 속성 파일의 프로젝트 빌드 구성에 이미있는 정보를 하드 코딩하는 것을 방지 할 수 있습니다.

물론이 튜토리얼과 함께 제공되는 코드는 GitHub에서 찾을 수 있습니다.