티스토리 뷰

지난번에 다음과 같은 글을 쓴적이 있다. 

 

Maven Profile 에 따라 빌드하기

springboot로 구현된 A,B프로젝트가 있다고 하자. 그리고 상황은 A프로젝트가 독립적으로 실행이 되어야 하고 또한 B 프로젝트에는 dependency로 포함이 되어야 한다. 그냥 똑같이 빌드해서 자체실행도

oingdaddy.tistory.com

이 글과 거의 비슷한 내용이다. 맞다. 재탕이다. 하지만 약간의 발상의 전환은 해야 한다. 

<dependencies>
   ... 생략 ...   
   <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>${servlet.api.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <version>${jsp.api.version}</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

<profiles>
    <profile>
        <id>freemarker</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <dependencies>
            <dependency>
                <groupId>oing</groupId>
                <artifactId>oing-freemarker</artifactId>
                <version>${project.version}</version>
            </dependency>
        </dependencies>
    </profile>
    <profile>
        <id>jsp</id>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <dependencies>
            <dependency>
                <groupId>oing</groupId>
                <artifactId>oing-jsp</artifactId>
                <version>${project.version}</version>
            </dependency>
        </dependencies>
    </profile>
</profiles>

주저리주저리 글을 쓰는것보다 이건 그냥 이 샘플코드만 보면 이렇게 하면 되는구나가 바로 파악되는 부분이라 바로 소스를 올렸다. <dependencies> 를 여러개 사용할 수 있다는게 포인트이다. profile에 따라 분기되지 않아도 되는 dependency는 기존에 사용하던 것처럼 사용하고 분기되야 하는 부분들만 <profiles>를 통해 분기하였다. 물론 각 profile 안에서 예제와 같이 <dependencies>를 정의해야 한다. 위와 같이 기본은 freemarker를 사용하고 jsp는 jsp라는 profile을 지정했을때 사용되도록 구성을 하였다. 

 

이렇게 구성을 하면 이클립스에서는 어떻게 될까?

테스트 결과 이클립스에서도 activeByDefault true로 설정한 값으로 dependency가 인식이 된다. 따라서 로컬개발환경에서도 문제없이 사용할 수 있다. 그냥 springboot boot dashboard에서 평소처럼 사용하면 된다.

 

기본이 아닌 profile을 로컬에서 실행시키고 싶을때는 어떻게 하면 될까?

두가지 방법이 있는데 첫번째는 pom.xml에서 activeByDefault 값을 바꿔주는 것이다. (너무 당연한 얘기)

두번째는 메이븐으로 실행을 시키고 maven profile 옵션을 주도록 한다. 이건 어떻게 하는거냐?

maven으로 springboot app 실행

프로젝트 우클릭 후 Run As > Maven build... 을 클릭해본다. 그리고 다음과 같이 작성해준다. 

maven으로 springboot app 실행

한번 이렇게 작성을 해놓으면 그다음부터는 run configuration을 통해 재사용을 할 수 있다. 아무튼 이런 방식으로 maven profile에 따라 기동을 할 수 있는 방법이 있다. 

IDE가 아니라면 mvn springboot:run -P jsp 라는 명령어를 통해 실행시킬수도 있다. 

 

그럼 빌드할때는 어떻게 옵션을 줘야 하나?

mvn clean install -P jsp

위의 maven으로 springboot 실행할때와 마찬가지로 빌드할때도 동일하게 주면 된다.

 

이 외의 maven option은 다음 글을 참조하도록 하자.

 

Maven 명령어 및 옵션 모음

maven에서 사용할 수 있는 명령어들에 정리해본다. command desc compile 컴파일 수행 test 컴파일 수행 후 테스트 클래스 수행 package 컴파일을 수행하고 컴파일한 소스를 packaging 양식(war or jar)에 맞춰 프

oingdaddy.tistory.com

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30