본문 바로가기

개발환경/이클립스

M2E + WTP 사용시 컨텍스트 변경의 문제

개발환경: 
- Windows 7 + jdk1.6.0_35(64bit) + Tomcat 7.0.32
- Eclipse Indigo SR2 (SDK v3.7.2)

- WTP 3.3.2(R-3.3.2-20120210195245) + maven-3.0.4(m2e-1.2.0.20120903-1050)


이클립스와 메이븐의 결합은 개발자들에게 편리함을 제공하지만,

한편으론 형상관리와 결합하여 사용할 때 빈번한 .settings의 변화때문에 골치아픈점도 제공하고 있다.


그중 하나가 Dynamic Web Projects와 M2E통합으로 인해 

Maven -> Update Project... 명령을 수행하면 .settings/org.eclipse.wst.common.component 파일안의 <property name="context-root" value="/"/> 의 값이 계속변경된다는 것이다.        


그럼 이제 context root를 고정시키는 방법에 대해서 알아본다.


이클립스 내에서 m2e-wtp 플러그인을 사용하여 웹프로젝트를 관리할 때 다음과 같이 context root가 관리된다.


첫째, 기본적으로 m2e-wtp는 maven-war-plugin 환경에 정의된 <warName>값으로부터 독립웹애플리케이션의 context root가 적용된다.

<plugin>

  <artifactId>maven-war-plugin</artifactId>

  <version>2.2</version>

  <configuration>

     <warName>mywebapp</warName>

  </configuration>

</plugin>


둘째, 만약 값이 지정되어 있지 않다면 war 프로젝트의 <build> 섹션에 정의된 <finalName>이 적용된다. 그러므로 http://localhost:8080/project/ 와 같이 접근해야 한다면 다음과 같이 정의한다.

<project>

 <groupId>foo.bar</groupId> 

 <artifactId>web-project<artifactId> 

 <version>1.0.0-SNAPSHOT</version> 

 <packaging>war</packaging> 

 <build> 

   <finalName>project</finalName> 

   ...

 </build>

</project>


셋째, 마지막으로 pom.xml파일안에 custom property를 설정함으로써 WTP에서 사용할 context root를 변경할 수 있다. 예를 들어 "/"를 사용해야 한다면, 단지 pom.xml 파일의 <properties> 섹션에 <m2eclipse.wtp.contextRoot> property를 정의하면 된다.

<project>

 <groupId>foo.bar</groupId> 

 <artifactId>web-project<artifactId> 

 <version>1.0.0-SNAPSHOT</version> 

 <packaging>war</packaging> 

 <build> 

   <finalName>project</finalName> 

   ...

 </build>

 <properties>

   <m2eclipse.wtp.contextRoot>/</m2eclipse.wtp.contextRoot>

   ...

 </properties>

</project>


<m2eclipse.wtp.contextRoot> 는 <warName> 과 <finalNAme>보다 앞서 적용된다.


참고: http://wiki.eclipse.org/M2E-WTP_FAQ