2014년 7월 5일 토요일

Eclipse에서 Maven 웹 프로젝트 구성하기

이번 글은 Eclipse Dynamic Web Project를 Maven 프로젝트로 변환하여 Maven으로 빌드하는 방법을 설명합니다.

먼저 필요한 소프트웨어는

  1. Eclipse EE
  2. M2E plugin for Eclipse (Maven Eclipse Plugin)
  3. Maven

Eclipse EE 설치

최신 Eclipse EE를 다운로드하여 압축을 푼 후에 실행 시킵니다.

M2E Plugin 설치

M2E plugin을 설치하기 위해서
Help > Install New Software > Add 버튼
name: 원하는 location 이름
location: http://download.eclipse.org/technology/m2e/releases
저장을 합니다.

Working With 에서 위에서 입력한 이름을 선택하고 M2E plugin을 설치합니다.

Maven 설치

maven.apache.org에서 최신 Maven 을 다운로드하여 원하는 곳에 압축을 풉니다.
M2_HOME 환경 변수를 압축을 푼 디렉토리로 설정합니다.
M2_HOME/bin 디렉토리를 PATH에 추가하여, 어느 곳에서나 mvn 명령을 실행할 수 있도록 합니다.

Eclipse Maven 설정

Eclipse 환경설정 > Maven > User Settings 에서 maven settings.xml을 지정할 수 있고, Maven repository의 위치도 지정할 수 있습니다.
변경하지 않으면, Maven은 
<사용자 홈>/.m2/settings.xml
<사용자 홈>/.m2/repository 
를 기본으로 사용합니다.

여기까지는 Dynamic Web Project를 Maven 프로젝트로 변환하기 위한 설치 과정입니다.

Dynamic Web Project 생성

File > New > Dynamic Web Project 선택합니다
프로젝트 이름 입력 > Next
Source folders on build path 에서 기본으로 있는 "src"를 삭제합니다.
그리고 "Add Folder" 버튼으로 아래와 같이 Maven 관례에 따라 디렉토리 구조를 만듭니다.
src/main/java
src/main/resources
src/main/webapp
src/test/java
src/test/resources

프로젝트 속성으로 보면 아래와 같은 모습이 됩니다.


Maven Project로 변환

프로젝트 이름 위에서 오른쪽 마우스 클릭 > Configure > Convert To Maven Project


Group Id, Artifact Id, Version을 입력합니다.

입력을 마치면, 새로운 디렉토리가 몇 개 생기고 pom.xml 파일이 생성됩니다.

pom.xml을 열어보면, <build> 에 2개의 plugin이 존재합니다.
하나는  maven-war-plugin 이고 다른 하나는 maven-compiler-plugin 이 중에서 우리가 만들 Dynamic Web Project를 war로 패키징 해주는 plugin이 maven-war-plugin 입니다.
지금 글을 쓰는 시점에서는 2.4 버전이 최신입니다.

Maven 프로젝트 구조의 관례에 따라, 모든 웹 관련 리소스 들은 src/main/webapp에 두게합니다. 그런데 Eclipse에서 Dynamic Web Project를 만들 때에 동일한 역할을 하는 디렉토리가 WebContent입니다. WebContet를 그대로 써도 되긴 하지만 Maven 관례를 따르는 것이 좋습니다. 그래야 나중에 다른 사람이 봐도 이해하기 쉬우니까요.
pom.xml 파일을 다시보면 maven-war-plugin에 <warSourceDirectory>가 있습니다. 이 값이 현재는 WebContent로 되어 있습니다. 이것을 src/main/webapp로 변경합니다.
그리고 WebContent 하위의 디렉토리와 파일을 src/main/webapp로 복사하고 WebContent는 삭제합니다.

최종 디렉토리 구조는 아래와 같습니다.


Deployment Assembly 설정

이제 마지막으로 확인해야 할 것이 있습니다.
프로젝트 이름위에서 마우스 오른쪽 클릭 > Properties > Deployment Assembly
WebContent 는 위에서 디렉토리를 삭제했기 때문에, 제거합니다.
m2e-wtp/web-resources 도 삭제합니다.
src/main/webapp는 WEB-INF/classes 로 되어 있는 것을 "/"로 변경합니다. 그래야만 src/main/webapp 아래있는 리소스들이 war 패키징될 때에 최상위에 있게 됩니다. Edit 안된다면 삭제한 후에 "Add..."를 합니다

Maven 실행

먼저 프로젝트를 clean 합니다 (맨 처음 한번 clean을 먼저 실행 해 주는 것이 좋습니다)
프로젝트 이름 위에서 마우스 오른쪽 클릭 > Run As... > Maven clean
프로젝트 이름 위에서 마우스 오른쪽 클릭 > Run As... > Maven install

터미널에서 pom.xml이 있는 곳으로 이동하여
mvn clean install
정상적으로 실행되는지 확인합니다.





댓글 3개:

  1. 많은 도움이 되었습니다.
    감사합니다.

    답글삭제
  2. 정말 감사합니다!

    답글삭제
  3. 18년 되서야 감사하는 말을 하네요^ 감사합니다!

    답글삭제