programing

스프링 부트 application.properties의 Maven 속성 사용

oldcodes 2023. 3. 20. 23:34
반응형

스프링 부트 application.properties의 Maven 속성 사용

pom.xml에서 application.properties로 속성을 로드하려고 합니다.dev와 prod라는2개의 프로파일을 생성하여 다른 데이터베이스 URL을 사용합니다.Jenkins를 CI로 사용하고 있으며, 모든 애플리케이션(주로 부팅 프로젝트 없이 봄 MVC)에서 maven 프로파일을 사용하여 Tomcat에 배포하고 있습니다.maven 속성을 사용하여 이 작업을 수행할 수 있는 가능성이 있습니까?저도 그런 걸 해봤어요.spring.datasource.url=${jdbc.url}

이 작업을 수행하기 전에 배포 가능한 패키지에서 속성 파일을 외부화하는 것을 고려해 보십시오.이렇게 하면 모든 환경에 동일한 컴파일을 배포할 수 있습니다.그러면 젠킨스가 실제로 불필요한 일을 덜 수 있습니다.베스트 프랙티스는 어플리케이션을 한 번만 빌드하는 것입니다만, 납득할 수 없는 경우는, 다음의 순서에 따릅니다.

  1. pom.xml에서 속성의 적절한 값을 가진 프로파일을 정의합니다.

    <profile>
        <id>dev</id>
       <properties>
           <jdbc.url>your_dev_URL</jdbc.url>
       </properties>
    </profile>
    
  2. application.properties 파일이 포함된 디렉토리를 필터링하도록 Maven Resources Plugin을 설정합니다.

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        ...
    </build>
    
  3. Spring Boot 1.3 이상을 사용하는 경우 Maven Resources Plugin에 의해 필터링된 토큰과 Spring Boot 플레이스 홀더 간의 경합을 피하기 위해 필터링된 값에 다른 구문을 사용해야 하는 솔루션이 프레임워크에 도입되었습니다.

    그 대신${property.key}를 사용해야 합니다.@property.key@이 경우 application.properties에 다음 샘플이 포함되어 있어야 합니다.

    spring.datasource.url=@jdbc.url@
    

또한 다양한 메이븐 프로파일에 대한 스프링 속성 파일 분리에 대한 게시물을 확인할 수 있습니다.그러면 pom.xml의 값이 외부로 출력됩니다.

Daniel Olszewski와 더불어 yml 파일에서 다음과 같은 오류가 발생했습니다. ( 들여쓰기에 @ 사용하지 마십시오.)

그래서 작은 따옴표를 붙여서 고쳤어요.누군가 도움이 될 거예요.

spring:
 datasource:
  url: '@jdbc.url@'

물론 있죠.application.properties 파일에 Maven Filtering을 사용하면 Maven이 프로필 고유의 값을 파일에 기록합니다.

단, Maven 프로파일은 어플리케이션 패키지/빌드 시에 동작하지만 Spring Boot 프로파일은 런타임에 동작한다는 것을 이해해야 합니다.즉, Maven 프로파일을 사용하면 프로파일 고유의 불변 빌드를 얻을 수 있습니다.또한 Spring Boot 프로파일을 사용하면 실행 전 또는 실행 중에도 매번 애플리케이션 구성을 변경할 수 있습니다.

다음 항목도 참조하십시오.

언급URL : https://stackoverflow.com/questions/36703499/using-maven-properties-in-application-properties-in-spring-boot

반응형