티스토리 뷰

앞서 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 구조로 통일을 하려 한다. 


src/main/resources/META-INF/resources/WEB-INF/jsp

위와 같은 경로에 jsp 파일을 위치시켰다. IDE 환경에서는 그냥 이렇게 하고 써도 잘 된다. 하지만 이걸 war 빌드해서 실행을 시켜보면 다음과 같은 화면을 만날수 있다. 

jsp 404 error

참 스트레스 받는 화면이다.. 

before

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 파일은 다음과 같은 모습으로 되어 있는것을 확인할 수 있다. 

after

이렇게 webapp하위에 WEB-INF가 위치해 있지 않아도 war로 빌드시 경로를 변경하여 정상적으로 빌드를 할 수 있다. 

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/05   »
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 31