properties 분리- Maven profile

아래와 같이 application 파일을 생성 후 선택하는 방식으로 하는 경우 단점(?)

- application-dev.properties
- application-prod.properties
  • 기본적으로 resources에 포함된 파일들은 함께 배포가 되기때문에 jar/war을 만들때 prod/dev 파일도 함께 포함이 될수 있다.
  • dev/prod별로 properties 외 다른 설정파일들이 있을경우 관리가 힘들수 있다.(같은 폴더에 dev/prod가 함께 있을때)
  • log4j2-spring-dev.xml / log4j2-spring-prod.xml

Maven - profile 속성 사용

  • 배포 방식에 따라 관리해야할 리소스 파일이 여러개인 경우 편하다.
  • jar/war 배포시 prod/dev 설정파일이 함께 배포되지 않음. 단 dev용 jar/war을 prod로 변경하려면 jar/war을 다시 만들어야함

1. prod/dev 폴더 생성

기존 resources의 하위 폴더가 아닌 다른 곳에 폴더를 생성.
하위 폴더에 생성시 자동으로 포함되기 때문에 다른 프로파일은 제외시켜야하는 설정을 추가로 설정해야함

src/main/resources-dev
src/main/resources-prod

2. pom.xml 수정

1. profiles 추가

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <env>dev</env>
        </properties>
        <!-- 기본 프로파일 -->
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <env>prod</env>
        </properties>
    </profile>
</profiles>

2. resources 추가

prod/dev 리소스 위치 지정

<build>
    ...
    <resources>
        <!-- 공통 -->
        <resource>
            <directory>src/main/resources</directory>
        </resource>

        <!-- local/dev/prod -->
        <resource>
            <directory>src/main/resources-${env}</directory>
        </resource>
    </resources>
    <testResources>
        <testResource>
            <directory>src/test/resources</directory>
        </testResource>
    </testResources>
    ...
</build>

3. install 실행시 profile 선택하기

console 환경

// activeByDefault가 true로 설정한 프로파일 사용
mvn install

// -P (대문자) 옵션 변경
mvn -P prod install
mvn -P dev install

eclipse

아래의 과정으로 eclipse에서 사용할 profiles을 선택 후 springboot를 실행하거나 mven 실행시 해당 profiles을 사용

eclipse 상에서 프로젝트 선택 -> 마우스 우측 버튼 -> Maven -> Select Maven Profiles
-> 사용할 profiles 선택

참고

eclipse의 Package Explorer 트리에서 선택한 프로파일 경로 위치가 출력되어야한다.

// dev 선택시
src/main/resources-profiles-dev

// prod 선택시
src/main/resources-profiles-prod

만약 선택한 프로파일 폴더 경로가 표시 되지 않는 경우 아래와 같이 실행하여 maven 변경사항을 update하여 경로가 표시되는 확인한다.

eclipse 상에서 프로젝트 선택 -> 마우스 우측 버튼 -> Maven -> Update Project
-> 작업 중인 프로젝트 선택 후 OK버튼 클릭

+ Recent posts