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

메이븐 멀티모듈 프로젝트로 개발을 하게 되면 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