Ctrl + Alt + S → Bulid, Execution, Deployment → Bulid Tools → Gradle → Gradle user home
스프링부트 프로젝트의 구조
1) 현재 구조는 resources와 함께 resources-env 를 따로 구분한 구조이다.
profile은 resources-env 여기에 setting한다.
2) properties에는 DB 정보들이 담겨있다.
build.gradle 에서 profile 설정
gradle 에서 해당 프로젝트의 profile을 비교해서 local이면 resources-env 하위 폴더에 local폴더 properties를 읽게했다.
Profile 변경하기
위 처럼 셋팅을 했을 시 Default일 때는 local DB로 연결이 될 것이다.
그럼 dev 혹은 prod로 붙으려면 어떻게 해야할까?
방법 1)
Intellij 상단 Run을 클릭 → Edit Configuration 을 누르면 아래와 같은 설정창이 나온다.
혹은 두번째 스크린샷처럼 하면 된다.
Run/Debug Configurations 창에 보면 VM Options이 있는데 여기에는 많은 옵션을 줄 수 있다.
여기서 사용할 옵션은 -Dspring.profiles.active='' 을 사용하면 된다.
이 옵션에 -Dspring.profiles.active=prod로 설정하고 build.gradle 에서 prod로 설정하면 된다.
방법 2)
방법 1)과 비슷하다. 일단 WebApplication의 Run/Debug Configurations가 아닌 BootRun Run/Debug Configurationsd을 실행하면 된다.
BootRun은 Gradle로 프로젝트 만들게 되면 Intellij 오른쪽 라인에 Gradle탭이 나타난다.
Gradle탭을 누르고 Task폴더 하위를 보면 위의 스크린샷과 동일하게 나올 것이다.
이때 마우스 오른쪽을 누르면 Edit boorRun이 나오는데 해당 부분을 클릭한다.
기존 Run/Debug Configurations창과는 살짝 다른데
이유는 방법1_이미지2) 처럼 들어가지 않아서 그런 것이다.
무튼 여기서 설정해도 상관없다.
위 창을 들어오면 Arguments 칸이 보이고 옵션값으로는 -Pprofile=prod 라고 적는다.
그리고 실행할 때는 WebApplication이 아닌 프로젝트명 [bootRun]을 실행한다.
현재 필자는 'blueAdmin [bootRun]' 이걸 실행한다.
요약
1. bulid.gradle 에서 profile 셋팅.
2. 원하는 profile값을 VM Option 혹은 Argument에 준다.
3. 실행, 끝.
번외
현재 이 프로젝트인 경우에는 @Configuration을 이용해서 Bean설정을 해준 후 보안프로토콜 화면으로 자동전환하게 만들었다. 그래서 위의 스크린샷을 보면 @Value 값이 server.config.type 으로 되어 있는데 이 부분은 resources-env 하위 폴더에 있는 properties에 정의되어 있다. 그렇기때문에 profile 스왑하는 과정에서 if조건처리 된 부분을 지워주고 해야지만 위 방법들이 먹힌다.