pom.xml 에 다음과 같이 scope가 provided로 설정되어 있다.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
프로젝트의 Web Deployment Assembly 설정을 진행한 후 톰켓 플러그인 가상 배포 디렉토리 경로를 확인해 보면 servlet 관련 jar 파일이 배포되어 있는 것을 확인할 수 있다.
.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\TestProject\WEB-INF\lib 경로에 javax.servlet-api-3.0.1.jar 파일이 배포되어 있는 것이다.
이처럼 lib 디렉토리에 서블릿 관련 라이브러리가 배포되어 있으면 jar 파일의 충돌로 인한 문제가 발생되는 경우가 있다.
내 로컬에 설치되어 있는 톰켓의 lib 폴더에는 이미 서블릿 jar 파일이 포함되어 있는데 이 jar 파일과 가상배포디렉토리에 배포되어 있는 jar 파일과의 충돌이 발생하여 서버가 정상적으로 기동이 안 되는 경우가 종종 발생하기 때문이다.
간혹 jar 파일이 가상배포 디렉토리에 배포가 되어 있어도 문제가 안 되는 경우는 jar 파일의 버전이 비슷한 경우인 것 같다.
충돌 현상을 방지하기 위한 방법은 eclipse의 메이븐 플러그인을 새로 설치하는 것이다.
indigo에 현재 설치되어 있는 버전이 m2eclipse-wtp 버전인데 이 플러그인은 maven scope 를 제대로 인식하지 못하는 것 같다. pom.xml에 정의되어 되어 있는 dependecny 라이브러리는 모두 톰켓 가상 배포 디렉토리로 배포된다고 보면 될 것이다.
아래와 같이 기존 설치되어 있었던 m2eclipse는 deprecated 되었고, m2e-wtp라는 새로운 버전이 나왔다.
m2e-wtp 로 검색을 해보니 juno 버전이 있어 해당 버전으로 설치를 진행하였다. indigo 버전은 따로 없었고, juno 버전을 깔아도 하위 버전 호환성이 가능할 것으로 예상하였다. 설치는 정상적으로 진행되었다.
설치 후 더이상 톰켓 가상배포디렉토리에 scope provided로 설정한 dependency 파일들은 copy 되지 않았다.
Eclipse Juno를 설치하면 기본적으로 m2e-wtp 플러그인이 설치되어 있기 때문에 문제가 없지만 만약 m2eclipse-wtp 플러그인을 사용하고 있고, 메이븐 프로젝트로 개발을 진행한다면 m2e-wtp 플러그인으로의 업데이트를 권장한다.
'개발툴' 카테고리의 다른 글
Fiddler HTTPS 데이터 확인 (0) | 2015.05.14 |
---|---|
The import org.springframework.beans.factory.annotation.Autowired is never used 경고문 해결 방법 (0) | 2015.03.06 |
maven build 시 properties 값 변경 방법 (0) | 2015.03.04 |
PyCharm 설정 (0) | 2015.01.19 |
Git stash 기능 (0) | 2014.07.28 |
javascript 빨간 X표시 안보이게 하기 (2) | 2014.07.16 |
Shared workspace plugin 설정 (0) | 2014.07.01 |
이클립스 Open Resource 창에서 특정 파일 및 폴더 제외 방법 (473) | 2014.06.27 |