티스토리 뷰
지난번에 다음과 같은 글을 쓴적이 있다.
이 글과 거의 비슷한 내용이다. 맞다. 재탕이다. 하지만 약간의 발상의 전환은 해야 한다.
<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 옵션을 주도록 한다. 이건 어떻게 하는거냐?
프로젝트 우클릭 후 Run As > Maven build... 을 클릭해본다. 그리고 다음과 같이 작성해준다.
한번 이렇게 작성을 해놓으면 그다음부터는 run configuration을 통해 재사용을 할 수 있다. 아무튼 이런 방식으로 maven profile에 따라 기동을 할 수 있는 방법이 있다.
IDE가 아니라면 mvn springboot:run -P jsp 라는 명령어를 통해 실행시킬수도 있다.
그럼 빌드할때는 어떻게 옵션을 줘야 하나?
mvn clean install -P jsp
위의 maven으로 springboot 실행할때와 마찬가지로 빌드할때도 동일하게 주면 된다.
이 외의 maven option은 다음 글을 참조하도록 하자.
끝!
'CI,CD > Build' 카테고리의 다른 글
[Maven] Return code is: 501 ReasonPhrase:HTTPS Required. and 'parent.relativePath' points at wrong local POM 오류 조치 (0) | 2022.04.19 |
---|---|
Maven : Updating Maven Project has encountered a problem 오류 조치 (0) | 2022.02.21 |
Maven Profile 에 따라 빌드하기 (0) | 2022.02.18 |
Maven source code 포함해서 build 하기 (w. Springboot) (0) | 2021.11.09 |
Maven Build 중 ChecksumFailureException 오류 조치 (0) | 2021.06.23 |