본문 바로가기
개발툴

maven프로젝트 Run on Server로 tomcat 구동 방법 (두 번째 방법)

by 탁구치는 개발자 2013. 2. 19.


예전에 이클립스에 내장되어 있는 tomcat을 이용하여 메이븐 프로젝트 구동하는 방법에 대해서 블로깅한 적이 있는데, 이 방법 외에 또 다른 방법이 있음을 최근에 알게 되었다.


maven프로젝트 Run on Server로 tomcat 구동 방법 (첫 번째 방법)


일단 메이븐 프로젝트를 생성한 후 Project Facets에서 Dynamic Web Module에 체크하여 웹 프로젝트로 만든다.

이후 다음과 같이 설정을 한 후 Servers 탭에 있는 tomcat을 구동하면 정상적으로 웹 애플리케이션을 띄울 수 있다.


웹 프로젝트 우 클릭 후 Properties 클릭

Libraries에 Maven Dependencies가 추가되어 있어야지만 자바 파일이 정상적으로 컴파일 된다.


빌드 패스에 src/main/java, src/main/resources, src/test/java, src/test/resources를 추가한다.

메이븐 프로젝트로 생성하였다면 기본적으로 추가되어 있을 것이다.


Deployment Assembly에 Maven Dependencies가 꼭 추가되어 있어야 tomcat 플러그인 가상 디렉토리에 jar파일들이 배포된다.


톰켓 플러그인 가상 배포 디렉토리 경로

D:\dev\workspace\project\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\springProject



위와 같이 설정 후 Servers 탭에 있는 tomcat을 기동하게 되면 아래와 같은 메세지를 만나게 된다.

INFO: validateJarFile(D:\workspace\project_test\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\Front\WEB-INF\lib\javax.servlet-api-3.0.1.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class


jar not loaded. 와 같은 에러가 발생되는 이유는 pom.xml에 servlet 관련 dependency가 추가되어 있어서 ${TOMCAT_HOME}/lib 디렉토리에 있는 servlet jar 파일과의 충돌로 인한 현상이다.

특이한 점은 이와 같이 충돌 메세지를 출력한 후 웹 애플리케이션이 중지되는 경우가 있는 반면에 오류 메세지는 출력되지만 웹 애플리케이션은 정상적으로 기동되는 경우가 있다는 것이다.


내 생각에 정상적으로 웹 애플리케이션이 동작하지 않는 경우는 pom.xml 에 정의되어 있는 dependency 라이브러리가 꼬여서 발생된 것으로 추측된다.


만약 위와 같이 정상적으로 웹 애플리케이션이 동작하지 않는 다면 pom.xml 파일에 정의되어 있는 dependency 라이브러리를 점검해 볼 필요가 있다. 특히 servlet 관련 라이브러리가 다른 라이브러리로 인한 의존성으로 추가되어 있는지를 확인해야 하며 만약 추가되어 있다면 exclusions을 사용하여 제외시키면 될 것이다.