티스토리 뷰

Spring Frameworks

Spring boot - 빌드 profile 설정

까오기 까오기 2019. 2. 20. 17:22

Overview 

Dev - QA - Product에 따른 profile 설정입니다. 


Spring에서 사용하는 profile과 Maven/Gradle에서 사용하는 profile은 뭐가 다른가요?

개발자 중에 Maven, Gradle에서 사용하는 profile과 spring에서 사용하는 profile을 구분 못하는 사람들이 제법 많습니다. 

Maven/Gradle에서 profile을 이용하는 것은 build 시점에 해당 리소스를 선별적으로 패키지에 포함 시키고자 할 때 이용하는 것입니다. 

Spring에서 사용하는 것은 소스의 변함은 없고 profile에 따라 프레임워크가 선별적으로 사용하는 것입니다. 

Maven 예제 

1. 리소스 디렉토리 생성


프로젝트를 생성하고 리소스 디렉토리를 추가합니다. 
src/main/resources에는 개발/qa/운영과 상관없이 공통적으로 사용되는 것들을 넣습니다. 
그외 환경에 따라 달라 지는 것들은 profile로 구분하여 생성합니다. 

src/main/resources-[profile] 

2. pom.xml 수정 

    <!-- profile 추가 : dev, qa, release  -->
    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <environment>dev</environment>
                <maven.test.skip>true</maven.test.skip>
            </properties>
        </profile>
        <profile>
            <id>qa</id>
            <properties>
                <environment>qa</environment>
                <maven.test.skip>true</maven.test.skip>
            </properties>
        </profile>
        <profile>
            <id>release</id>
            <properties>
                <environment>release</environment>
                <maven.test.skip>true</maven.test.skip>
            </properties>
        </profile>
    </profiles>
   <!-- build 수정 -->
   <build>
        <sourceDirectory>src/main/java</sourceDirectory>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources-${environment}</directory>
            </resource>
        </resources>
    </build>


3. run maven 
clean install -Dmaven.test.skip=true -Pdev



4. 결과 확인



Gradle 예제

1. 리소스 디렉토리 생성 : maven과 동일하게 한다. 

2. build.gradle 수정 

sourceSets { 

    if (!project.hasProperty('profile') || !profile) { 

        ext.profile = 'dev' 

    } 

    main { 

        java {

            srcDirs "src/main/java" 

        } 

        resources { 

            srcDirs "src/main/resources", "src/main/resources-${profile}" 

        } 

    } 

}


3. run gradle : clean build -x test Pprofile=dev




4. 결과 확인 



Spring boot profile 예제 

1. properties 추가 : application-[profile].properties

2. properties 수정 


application.properties

spring.profiles.active=qa

profile을 qa로 설정한다. 


application-dev.properties

app.title=eble-dev


application-qa.properties

app.title=eble-qa


application-release.properties

app.title=eble-release


TestController

1
2
3
4
5
6
7
8
9
10
11
12
@RestController
public class TestRestController {
 
    @Value("${app.title}")
    private String appTitle;
    
    @GetMapping("/test")
    public String test() {
        
        return appTitle;
    }
}
cs

이렇게 하면 현재 실행하는 profile을 확인 할 수 있다. 


실행 결과 

eblo-qa


Github 링크

https://github.com/kkaok/examples

댓글
댓글쓰기 폼