[Spring/Maven] Maven Profile 별 운영 환경에 맞게 패키징 하기

TenaLee·2021년 3월 10일
0

[프로젝트 패키지 및 배포 루틴]

  1. pom.xml 파일을 가령 아래와 같이 설정한다.
pom.xml

...

    <profiles>
        <profile>
            <id>local</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <spring.profiles.active>local</spring.profiles.active>
            </properties>
        </profile>
        <profile>
            <id>dev</id>
            <properties>
                <spring.profiles.active>dev</spring.profiles.active>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <spring.profiles.active>prod</spring.profiles.active>
            </properties>
        </profile>
    </profiles>

...
  1. application.yml 에서 @spring.profiles.active@ placeholder 를 사용하고,
spring:
  profiles:
    active: @spring.profiles.active@
  1. Resource filtering 을 활성화해준다.
<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    ...
</build>

(스프링 부트의 경우 spring-boot-starter-parent 모듈를 inherit 하는 경우 생략가능, 활성화 되도록 기본 설정됨)

  1. 마지막으로 메이븐에 -P parameter 를 주면 된다.
## 명시하지 않을 경우 activeByDefault로 설정한 local이 기본 profile로 적용
mvn clean package
 
## local deploy
mvn clean package -P local
 
## 테스트용 deploy
mvn clean package -P test

## production용 
mvn clean package -P prod

명령어를 간략히 설명하자면

mvn clean package -P prod

이 명령어는 prod 프로파일을 적용하여 앱을 패키지 할 것이고, spring.profiles.active 의 값도 prod 로 설정할 것이라는 의미

Official

참고

profile
Tenacity

0개의 댓글