Java&Web

[Maven] Maven Profile을 이용한 Springboot 배포서버 별 환경 구성하기

프로그래민 2020. 12. 29. 23:42
반응형

Springboot를 개발하고 배포를 하다보면 다양한 서버환경을 만나게 된다. 예를 들면 하나의 애플리케이션 출시되기 전까지 다음과 같은 서버 환경을 거칠수도 있다.

  • Local 서버 : 각 개발자들의 로컬 환경에 띄우는 서버
  • Alpha 서버 : 통합 코드로 띄우는 서버
  • Beta 서버 : Client 개발자 연동 및 QA 테스트 환경 제공
  • Staging 서버 : Real 서버와 동일 환경 설정 후 테스트
  • Real 서버 : 실제 사용자의 게임 처리 

위의 서버 환경은 LINE의 Rangers 게임 개발팀의 서버환경이다(출처 : LINE Rangers 신입사원의 서버 분석기). 이처럼 한 애플리케이션에 대해 다양한 서버환경이 존재하고 각 서버환경마다 다른 개발환경들(DB설정, log설정, path설정 등)이 적용되어야 한다. 이를 위해서 Maven의 profile을 이용하여 배포서버 별 환경을 구성해보았다.

 

pom.xml에 profile 작성

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
    <profiles>
        <profile>
            <id>local</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <environment>local</environment>
            </properties>
        </profile>
 
        <profile>
            <id>dev</id>
            <properties>
                <environment>dev</environment>
            </properties>
        </profile>
 
        <profile>
            <id>ci</id>
            <properties>
                <environment>ci</environment>
            </properties>
        </profile>
    </profiles>
                                                                                

pom.xml에 local, dev, ci의 3가지 개발환경을 구성할 수 있도록 profile들을 추가해주었다.

1
2
3
4
5
6
7
    <build>
        <resources>
            <resource>
                <directory>src/main/resources/${environment}</directory>
            </resource>
        </resources>
    </build>
                                                     

그 후 build 태그에 profile에 따라결정된 enviroment에 따라 resource 경로를 설정할 수 있도록 해주었다.

 

resources의 directory 구성

기존의 resources하위에 존재하던 application.properties를 지우고 각 local, dev, ci환경마다 그 배포환경에 맞는 application.properties와 log4j2.xml을 추가해주었다.

 

maven -P [profileName] 옵션

1
2
3
4
5
6
7
8
9
10
11
## 명시하지 않을 경우 default profile 적용
mvn clean package
 
## local 환경
mvn clean package -P local
 
## ci 환경
mvn clean package -P ci
 
## dev 환경
mvn clean package -P dev
                                                                                                     

그 후 maven에 -P [profileName] 옵션을 사용하면 각 profile에 따른 배포환경이 적용된 war파일을 확인할 수 있다. 

 

출처
www.lesstif.com/java/maven-profile-14090588.html
반응형