기록 > 기억
Maven 배포 (2) - 배포대상에 따라 패키징 다르게 하기 본문
Maven 배포 (2) - 배포대상에 따라 패키징 다르게 하기
※ Maven 배포 (1) → http://byson.tistory.com/17
* 목적
- 로컬/개발/운영의 DB 접속정보가 다름. 배포 시 각각 다른 DB 접속정보를 패키징 해야함.
* 문제
- 로컬/개발 서버의 환경설정을 운영에 잘못 반영 할 수 있음.
* 해결
- 로컬/개발/운영 각각 패키징 폴더를 생성하여 빌드 시 해당 폴더만 패키징.
1. 기존 개발 환경
2. 로컬/개발/운영 각각 패키징 폴더 생성
# src/main/resources-local
# src/main/resources-dev
# src/main/resources-real
- src/main/resources/properties/jdbc.properties 를 각 패키징 폴더에 복사
- src/main/resources/properties 폴더를 삭제
- 각 패키징 폴더의 DB 접속정보 수정
src/main/resources 폴더는 공통으로 컴파일하고, 배포대상(로컬/개발/운영) 별로 패키징함.
# local
jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:moviestar
jdbc.username=test
jdbc.password=test
# dev
jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@devServerIP:1521:moviestar
jdbc.username=test
jdbc.password=test
# real
jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@realServerIP:1521:moviestar
jdbc.username=scott
jdbc.password=tiger
3. JAVA Build Path 수정 (resources-local 추가)
Order and Export 탭에 가서 resources 밑에 resources-local이 오도록 수정.
4. pom.xml 수정
<!-- 배포시 설정파일 구분위한 프로파일 정의 -->
<profiles>
<!-- 로컬 -->
<profile>
<id>local</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<env>local</env>
</properties>
</profile>
<!-- 개발 -->
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
</profile>
<!-- 운영 -->
<profile>
<id>real</id>
<properties>
<env>real</env>
</properties>
</profile>
</profiles>
<!-- 배포시 resource 구분 -->
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/main/resources-${env}</directory>
</resource>
</resources>
<!-- 메이븐 배포시 서버구분을 위한 플러그인 추가 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
5. Run as > Run Configrations... > Maven build
Profiles가 Dev 이므로 Run 하면 src/main/resources-dev 폴더를 패키징
Profiles가 real 이면 src/main/resources-real 폴더를 패키징
Profiles를 입력하지 않으면 src/main/resources-local 폴더를 패키징 (local → defaultActive : true 이므로)
원격서버에 src/main/resources-dev 패키징하여 배포완료(!!!!)
원격서버 jdbc.properties 확인...
# dev
jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@devServerIP:1521:moviestar
jdbc.username=test
jdbc.password=test
※ golas : clean tomcat7:redeploy
profiles : dev
→ src/man/resources-dev 폴더를 패키징 하지만
clean : 로컬 PC에 war 파일이 먼저 생성되고 그 후 배포가 됨.(원래 그런건가?)
→ 로컬에서는 로컬 설정에 맞게 개발해야하므로
golas : clean package / profiles : local (defaultActive라 입력안해도 됨.)
해주어 작업 중...
'프로그래밍 > Maven' 카테고리의 다른 글
Maven 배포 (1) - Maven으로 원격 tomcat 배포 (0) | 2017.10.23 |
---|---|
pom.xml - ojdbc6.jar 에러 (0) | 2017.06.07 |