티스토리 뷰
앞서 Springboot + JSP 프로젝트를 jar로 배포하기 를 하며 META-INF를 사용하는 방법에 대해 알아보았다. 이번 글의 목적은 src>main>webapp>WEB-INF 이런 구조 대신 src/main/resources/META-INF/resources/WEB-INF 이 구조를 사용하고 war 빌드를 했을때 정상적으로 동작하게 하기 위함이다. 어떤때는 jar로 다른 프로젝트 안으로 들어가서 동작을 해야 하고 어떤때는 war로 독자적으로 실행을 하기 위해서 구조를 src/main/resources/META-INF/resources/WEB-INF 구조로 통일을 하려 한다.
위와 같은 경로에 jsp 파일을 위치시켰다. IDE 환경에서는 그냥 이렇게 하고 써도 잘 된다. 하지만 이걸 war 빌드해서 실행을 시켜보면 다음과 같은 화면을 만날수 있다.
참 스트레스 받는 화면이다..
war가 어떤 모습이길래 404가 나나 봤다. classes 하위에 META-INF 폴더가 들어있다. 이런 구조면 안된다.
META-INF의 war source directory를 변경해주어야 한다. 방법은 다음과 같다.
pom.xml
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warSourceDirectory>src/main/resources/META-INF/resources</warSourceDirectory>
</configuration>
</plugin>
</plugins>
</build>
package 실행시 war 파일 생성을 관장하는 maven-war-plugin을 활용하여 이 문제를 풀 수 있다. warSourceDirectory 를 사용해서 war source directory (WEB-INF)의 기본 경로를 위와 같이 설정해준다. 이렇게 하고 다시 빌드를 해보면 war 파일은 다음과 같은 모습으로 되어 있는것을 확인할 수 있다.
이렇게 webapp하위에 WEB-INF가 위치해 있지 않아도 war로 빌드시 경로를 변경하여 정상적으로 빌드를 할 수 있다.
끝!
'Framework > Spring' 카테고리의 다른 글
Springboot Servlet 여러개 사용하는 방법 (0) | 2021.12.07 |
---|---|
Springboot에서 jar 안의 Tiles 적용하는 방법 (0) | 2021.12.07 |
Springboot + JSP 프로젝트 jar로 배포하는 방법 (1) | 2021.12.03 |
실행가능한 Springboot 프로젝트를 다른 프로젝트에서 참조하는 방법 (0) | 2021.12.03 |
Spring Bean 개수 확인 및 등록정보 확인하는 방법 (0) | 2021.11.29 |