이클립스 indigo m2eclipse-wtp 사용시 maven scope 인식 불가 현상

개발툴|2014. 11. 13. 09:22

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 플러그인으로의 업데이트를 권장한다.

댓글()