개발/배포 환경마다 DB 환경변수도 다르고, (나 같은 경우엔) allowed origin도 다르고, 보통 뭐 이것저것 많이 다르다.
profile을 설정해서 별도의 귀찮은 작업 없이 개발 환경과 배포 환경을 분리해보자!
작성법은 생략한다.
다만 나의 경우 배포용 yml은 따로 디렉토리를 만들어 넣어줬다.
배포용 yml이 늘어날 가능성을 고려한 것인데... 그럴 일이 있을지는 의문
build.gradle도 조금 손을 봐줘야한다.
// profile 옵션을 줬으면 그 옵션, 없으면 "prod"
def profile = project.hasProperty("profile") ? project.property("profile").toString() : "prod"
sourceSets {
main {
resources {
// 맨 마지막 "src/main/resources/resources-${profile}" 추가 ⭐️
srcDirs = ["$frontDir/build", "$projectDir/src/main/resources", "src/main/resources/resources-${profile}"]
}
}
}
Gradle은 기본적으로 src/main/java만 소스 디렉토리로 인식한다. SourceSets에 Source 디렉터리를 등록하면 다른 디렉토리를 포함시킬 수 있다.
고로 resources/resources-prod 디렉토리를 빌드 시 포함시킨다.
이제 프로젝트를 배포용으로 빌드할 때 다음과 같은 명령어를 사용해야한다.
./gradlew clean build -Pprofile=prod
Jenkins 등 CI/CD 툴을 사용하고 있다면 수정해주고,
수동으로 빌드하면... 잘 기억하자!
인텔리제이도 좀 손봐줘야한다.
RunConfiguration > Modify options > Add VM options
-Dspring.profiles.active=dev
를 입력한다.
그러면 이제 IntelliJ를 통해 개발 서버를 켜면 dev 프로필로 실행되고,
gradlew로 빌드하면 prod 프로필이 활성화된다!