Notice
Recent Comments
Recent Posts
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today
Total
관리 메뉴

기록 > 기억

Maven 배포 (2) - 배포대상에 따라 패키징 다르게 하기 본문

프로그래밍/Maven

Maven 배포 (2) - 배포대상에 따라 패키징 다르게 하기

BY SON 2017. 10. 26. 15:35

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
Comments