Maven 배포시 서버에 맞게 환경설정 파일 배포 하기

Maven 배포시 서버에 맞게 환경설정 파일 배포 하기


개발된 소스를 서버에 배포 하다 보면 귀찮은 일들이 있다.

그중에 로컬, 개발, 운영 환경에 맞게 환경설정(DB정보, 첨부파일경로등)파일을

다르게 배포 해야된다.


ftp로 서버 환경에 맞게 환경설정 파일을 배포 하거나 war파일생성시 서버에 맞게 환경파일을

구성후 생성하는 경우가 있다.

이런일을 반복하다보면 참으로 번거롭고 귀찮다.


이런 일들을 자동화 하기위한 빌드툴(ANT, MAVEN, GRADLE) 등이 있는데,

현재 내가 작업중인 개발환경(MAVEN + 젠킨스)을 이용해 설정해 보기로 하자.


1. pom.xml 수정 build 부분에 resources경로를 추가 하고 profiles에 배포할 환경

   (로컬 : local, 운영 : live)을 추가 한다. 개발서버 까지 있다면 dev : 개발 을 추가

   하면 된다.


<build>        
    ...
    ...
    ...
    .
    
    <!-- 리소스 경로 설정 -->
    <resources>
        <resource>
            <directory>src/main/resources</directory>
        </resource>
        <resource>
            <directory>src/main/resources-${env}</directory>
        </resource>
    </resources>      
</build>
<profiles>
    <!-- local -->
    <profile>
        <id>local</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <env>local</env>
        </properties>
    </profile>
    <!-- live -->
    <profile>
        <id>live</id>
        <properties>
            <env>live</env>
        </properties>
    </profile>
</profiles>


2. 리소스를 분리하기 위한 폴더를 만들고 배포될 환경에 맞는 globals.properties를 넣어놓는다.

나는 기본 에 혹시몰라서 백업(읽히지 않게 확장자없이)을 해놓고 livelocal 폴더에 각각환경에

맞게 globals.properties 파일을 넣어놓았다.



3. 이제 maven 명령어를 이용해 war파일을 만들어보자

Run AS -> Run Configurations..를 선택한다.



4. Goals 부분에 maven 명령어를 입력 후 Run 선택

clean : 이전 내역 삭제

install : 로컬 저장소로 배포

-P live : live 프로필 사용

대략 이렇다.



5. war파일이 생성되었다. 압축을 풀고 globals.properties를 확인해보면 옵션을 live를 줬냐

local을 줬냐에 따라 다를것이다.



6. maven을 이용한 리소스를 다르게 하는 부분이 끝났다.

젠킨스를 이용하고 있다면 아래와 같이 사용하면 된다.



7. 리소스를 나눠놓은 상태에서 로컬에서 개발하기 위해선 아래와 같이 

로컬 리소스를 선택해야 한다.



이만.