maven에서 profile 관리는 빌드할때의 profile 관리이다.
war 파일을 만들어서 배포하는 환경이라고 하면,
maven에서 profile 관리하게 되면 production를 위한 war와 alpha를 위한 war가 따로 생성이 된다.
이와달리, spring-boot의 profile 기능을 활용하게 될 경우, 동일한 war 파일도 시작할때의 환경에 따라 production 혹은 alpha로 동작하게 된다.
아무튼 그런 이유로 spring-boot에서의 profile 지정방법을 살펴보자면...
(이게 spring과 동일한지는 잘 모르겠다...아마 spring의 profile과 같을것 같은데..미묘하게 다를 수도 있고...)
기본적으로 spring-boot는 application.properties 파일을 읽어들인다.
그리고 이 파일에 지정하는 속성들은 실행시점에 argument로 지정 가능하다.
spring-boot 어플에 argument로 던져서 main()에서 처리하는 방법
java -jar myapp.jar --spring.profiles.active=alpha,enableBatch
일반적인 -D 옵션으로 주는 방법
java -Dspring.profiles.active=alpha,enableBatch -jar myapp.jar
혹시 maven을 실행해서 spring-boot 플러그인 써야 한다면
mvn spring-boot:run -Drun.arguments="--spring.profiles.active=alpha,--spring.profiles.active=enableBatch"
linux에서 사용가능한 방법으로써 환경변수 활용하는 방법은
SPRING_PROFILES_ACTIVE=alpha,enableBatch java -jar target/con-batch.jar
사실 mvn의 spring-boot 플러그인을 쓸때는 차라리 linux 환경설정 방식을 쓰는게 좋다. spring-boot 플러그인의 파라메터 처리가 구려서...
SPRING_PROFILES_ACTIVE=alpha,enableBatch mvn spring-boot:run
등이 있다.
참고로, spring-boot의 경우 환경변수에 대_문_자 형태로 되어 있는 것들을 소.문.자 형태로 바꿔서 자기에게 맞는 환경변수가 있으면 갖다 쓴다.
즉, SPRING_PROFILES_ACTIVE는 spring-boot가 spring.profiles.active로 바꾼 후에 자기가 쓸 수 있는건지 검사해서 쓸 수 있으면 가져다 쓰게 되는 것이다.
http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
http://altfatterz.blogspot.kr/2014/10/software-configuration-with-spring-boot.html
"환경변수, Environment Variables"와 "시스템변수 System Properties"가 햇갈리긴 하는데,
환경변수: https://docs.oracle.com/javase/tutorial/essential/environment/env.html
시스템변수: https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html
'SW-PRODUCT > 개발' 카테고리의 다른 글
Twitter에서 Storm을 Heron으로 교체? (0) | 2015.11.12 |
---|---|
git github tips (0) | 2015.11.11 |
Mockito (0) | 2015.11.10 |
[도서] 서버/인프라 실전 구축 가이드 (0) | 2015.10.31 |
spring boot 4.2에서 CROS 지원이 추가됐다. (0) | 2015.10.31 |