예전에 이클립스에 내장되어 있는 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을 사용하여 제외시키면 될 것이다.
'개발툴' 카테고리의 다른 글
maven JUnit test가 실행되지 않을 때 (0) | 2013.03.22 |
---|---|
maven local repository에 jar 추가 (0) | 2013.03.20 |
Jenkins 설정에 대한 정리 (4) | 2013.03.13 |
이클립스 Java Templates 활용 방법 (0) | 2013.02.25 |
이클립스 tomcat 기동 후 자바 소스 수정 시 바로 적용 방법 (1) | 2013.02.18 |
ant 빌드 방법에 대해서 정리 (337) | 2013.02.05 |
이클립스 Deployment Assembly에 대해서 (5) | 2013.01.31 |
이클립스 egit 에서 remote push 인증 문제 (387) | 2013.01.07 |