서비스를 운영하다 보면 로컬, 개발(dev), 운영(prod) 환경에 따라
서로 다른 설정 파일을 사용해야 할 때가 많습니다.
이럴 때 Maven의 profile 기능을 활용하면,
환경별로 유연하게 빌드 설정을 관리할 수 있습니다.
이 글에서는 Maven Profile을 활용해 환경별 설정을 관리하는 방법과 함께,
리소스 경로를 유동적으로 지정하고 환경에 맞는 설정 파일을 로드하는 방법까지 살펴보겠습니다.
💡 기본 구조
1️⃣ 설정 파일이 기본 리소스 디렉터리에 존재할 경우
- 파일명에 -dev, -prod 등의 프로파일명이 포함되어 있어야 자동 로드됩니다.
src/main/resources/
├─ application.properties
├─ globals-dev.properties ✅
└─ globals-prod.properties ✅
2️⃣ 설정 파일이 별도 경로에 존재할 경우
- 경로는 달라도 파일명은 동일하게 유지할 수 있습니다.

📌 이 경우, 해당 디렉터리를 Maven classpath에 포함시켜야 합니다.
- pom.xml의 에 다음과 같이 리소스 경로를 추가합니다.
<build>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
</resource>
<resource>
<directory>${basedir}/profiles/${env}/resources</directory>
</resource>
</resources>
</build>
💡 Maven profile이란?
Maven의 는 환경에 따라 컴파일 옵션, 환경 변수, 속성 값 등을 다르게 지정할 수 있도록 도와주는 기능입니다.
🏠 로컬(local) 환경
로컬 개발자 환경에서는 별도 옵션 없이도 dev 프로파일이 활성화되도록
activeByDefault 를 true로 지정합니다.
📄 pom.xml 예시
<profiles>
<!-- 개발환경 -->
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!-- 운영환경 -->
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
</profiles>
📌 이렇게 설정하면 로컬에서 mvn clean install만 실행해도 자동으로 dev 환경이 적용됩니다.
⚙️ 빌드 및 실행 방법
✅ 로컬 개발 (기본값)
mvn clean package
- 기본적으로 dev 프로파일이 활성화됩니다. (activeByDefault)
✅ 프로파일 명시 실행
mvn clean package -P prod
mvn clean package -P dev
이렇게 설정하면 Maven은 해당 profile을 활성화하고,
spring.profiles.active 값을 dev 또는 prod로 전달하게 됩니다.
🗂️ Spring Boot 설정 연동
application.properties 또는 application.yml에 다음과 같은 설정을 추가합니다.
spring.config.import=classpath:globals-${spring.profiles.active}.properties
📌 예를 들어
- spring.profiles.active=dev이면 globals-dev.properties
- spring.profiles.active=prod이면 globals-prod.properties
가 자동으로 로드됩니다.
🧪 현재 활성화된 profile 확인하는 방법
import org.springframework.core.env.Environment;
@Autowired
Environment env;
@PostConstruct
public void printActiveProfile() {
System.out.println("✅ 활성화된 프로파일: " + Arrays.toString(env.getActiveProfiles()));
}
로컬에서 실행하면 콘솔에 다음처럼 출력됩니다.
✅ 활성화된 프로파일: [dev]
Maven profile 기능을 활용하면 코드 변경 없이
환경별 빌드 설정을 안전하게 분리할 수 있습니다.
특히 설정 파일의 경로를 유동적으로 관리하면,
하나의 프로젝트 구조 내에서도 환경마다 유연하게 설정을 유지할 수 있습니다.
🙌 🙌
'Back end > Spring Project' 카테고리의 다른 글
| [Spring] JPA flush (0) | 2025.08.14 |
|---|---|
| [Spring] JPA 기본 CRUD 동작 예제 (0) | 2025.08.13 |
| [Spring] BeanFactory와 ApplicationContext (0) | 2025.07.17 |
| [Spring] AnnotationConfigApplicationContext로 알아보는 스프링 컨테이너 생성 과정 (0) | 2025.07.15 |
| [Spring Project] 겨울을 지나 봄으로: 스프링의 등장 배경과 개념 (0) | 2025.05.12 |