반응형
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
반응형
'Java&Web' 카테고리의 다른 글
[MyBatis] MyBatis란 (0) | 2020.12.31 |
---|---|
[Logging] slf4j(Simple Logging Facade For Java)란 (0) | 2020.12.30 |
[Logging] Springboot에 Log4j2 설정하기 (0) | 2020.12.29 |
[Logging] slf4j, log4j, logback, log4j2 (0) | 2020.12.29 |
[Apache] Apache와 Springboot 연동하기(mod_jk) (0) | 2020.12.24 |