maven profile 을 이용하여 운영 환경에 맞게 패키징 하기
개요
local (개발자 개인 PC), development , test, staging, production 등 deploy 환경에 따라 달라져야할 정보들(JDBC URL, logging level, 기타 resource등)을 maven profile 을 이용하여 build 타임에 구성할 수 있다.
maven profile 은 환경마다 빌드를 새로 해야 하는 문제가 있으니 이것보다는 spring profile 을 권장합니다.
Example
test 용 maven project 생성
mvn -B archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-profile-test -DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.1-SNAPSHOT
resources 폴더밑에 deploy 를 위한 profile 폴더 생성
cd my-profile-test mkdir src/main/resources/{local,dev,test,prod}
- 예제용 property 파일 추가(dev, test 용)
vi src/main/resources/dev/db.properties
개발 시스템용 DB 연결정보 예db.username=dev db.password=dev-pwd db.url=dev_db_url
vi src/main/resources/test/db.properties
test 시스템용 DB 연결정보 예db.username=test db.password=testPwd db.url=test_db_url
pom.xml 에 profile 관련 properties 추가
<properties> <!-- -P 로 명시하지 않을 경우 기본 프로파일 --> <env>dev</env> </properties>
pom.xml 에 profiles 기술
<profiles> <profile> <id>dev</id> <properties> <env>dev</env> </properties> </profile> <profile> <id>test</id> <properties> <env>test</env> </properties> </profile> <profile> <id>local</id> <properties> <env>local</env> </properties> </profile> <profile> <id>prod</id> <properties> <env>prod</env> </properties> </profile> </profiles>
pom.xml 의 build element 에 resource 를 찾는 경로를 변경
<build> <resources> <resource> <directory>src/main/resources/${env}</directory> </resource> </resources> <testResources> <testResource> <directory>src/test/resources/${env}</directory> </testResource> </testResources> </build>
mvn package -P 프로파일명 으로 패키징
## 명시하지 않을 경우 dev 가 기본 profile로 적용 mvn clean package ## local deploy mvn clean package -P local ## 테스트용 deploy mvn clean package -P test ## production용 mvn clean package -P prod
- target 의 출력물(.war) 을 열어서 deploy 환경에 맞는 db.properties 가 패키징 되었는지 확인해 본다.