본문 바로가기
프로그래밍

Resource files jar에 포함시키기 (META-INF/resources)

by 탁구치는 개발자 2014. 7. 25.

메이븐 멀티모듈 프로젝트로 개발을 하게 되면 jar 또는 war와 같은 형태로 서브 모듈을 구성하게 된다.


jar 파일에는 대게 공통적으로 사용되는 java 코드들을 몰아 넣고, 메이븐 빌드 시 war 프로젝트의 WEB-INF/lib 디렉토리에 배포하여 사용되어지는데 jsp, css, js 같은 파일들도 이와 같이 사용하기 위해서는 어떻게 해야 하는지에 대해서 찾아보았다.


방법은 간단하다. (servlet 3.0에서만 가능)

다음과 같이 META-INF 하위에 resources 디렉토리를 생성한 후 그 안에 여러 프로젝트에서 공유할 resource를 추가해 주면 된다.

META-INF/resources/image/test.png

META-INF/resources/css/test.css

META-INF/resources/WEB-INF/jsp/common.jsp




우리는 WEB-INF 하위에 jsp 파일들이 있기 때문에 META-INF/resources 디렉토리 하위에 WEB-INF 와 같이 생성해 주었다. 이렇게 생성해 주는 이유는 web-context ROOT 기준에서  META-INF/resources 디렉토리로의 접근이 가능하기 때문이다.


이렇게 설정한 후 웹 애플리케이션을 구동하게 되면 다음과 같이 정적 리소스에 접근이 가능하다.

http://localhost:8080/contextPath/image/test.png

http://localhost:8080/contextPath/css/test.png