Gradle의 Profile은 스프링관련 설정이나 Database 관련 설정 또는 일반 변수를 지정할 수 있는 파일이다. 그러나 개발을 하는데 필요한 환경 값과 테스트 시 필요한 값 그리고 실제 서비스 운영에서의 값이 다를 수 있기 때문에 Profile을 분류하여 운용할 필요가 있다.
Profile 설정 방법은 다음과 같다.
(생략) ...
ext.profile = (!project.hasProperty('profile') || !profile) ? 'dev' : profile
sourceSets {
main {
resources {
srcDirs "src/main/resources", "src/main/resources/env/${profile}"
}
}
}
여기에서, ext는 추가 환경변수(extra profile)로써 'ext.{variation}' 형태로 선언이 가능하며, 사용 시 ${variation} 형태로 적용 가능하다. 위 스크립트에서는 프로젝트에 선언된 Property 값이 있는지 확인하고 없으면 기본 값인 'dev'를 profile 변수에 저장하고 있다.
이후 sourceSets 스크립트를 통해 리소스 경로를 "src/main/resources" 그리고 "src/main/resources/env/${profile}" 값으로 추가한 것을 볼 수 있다.
build.gralde에서 추가했던 "project.hasProperty" 스크립트는 스프링 부트 내부 컨테이터 실행 시 Profile 값을 지정하여 사용 가능하며, 해당 설정은 상단 메뉴에서 [Run] > [Edit Configurations...] 를 선택하여 생성된 화면에서 가능하다.
(※ 본 프로젝트는 개발 도구를 Intellij를 사용하고 있으므로 해당 도구를 기준으로 설명하겠다!)
위 그림은 스프링 부트 내부 컨테이너의 설정 창을 나타낸 것이다. 그림에서 보듯이 Spring Boot 영역의 Active profiles라는 입력 란에서 dev라는 값으로 Profile의 경로를 설정해주고 있다.