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버튼 클릭
'spring' 카테고리의 다른 글
[개발환경] Ubuntu - jdk tar.gz 설치 (0) | 2022.09.23 |
---|---|
[Springboot-junit] - JPA 테스트/@DataJpaTest (0) | 2022.03.06 |
[Spring] properties 설정 분리(1) (0) | 2021.02.17 |
[Springboot-junit4] controller 테스트하기 (0) | 2019.06.09 |
[spring] json 샘플 (0) | 2017.06.27 |