2014년 2월 27일 목요일

Eclipse에 Maven(m2eclipse) 플러그인 설치 및 프로젝트 생성

1. m2eclipse 플러그인 설치

m2eclipse 플러그인을 사용하려면 먼저 이클립스의 Help >> Install New Software… 이동하여 m2eclipse 플러그인을 설치한다. m2eclipse 플러그인의 update url 은 http://m2eclipse.sonatype.org/sites/m2e 이다.

[ m2eclipse 플러그인을 설치하는 화면 ]


2. 프로젝트 생성
m2eclipse 플러그인을 설치하면 이클립스에서 메이븐 프로젝트를 생성하는 것이 가능하다. File >> New >> Project로 이동한 후 Maven 메뉴로 이동한 후 “Maven Project”를 선택한다.

[ 메이븐 프로젝트를 생성하는 화면 ]

위의 그림을 보면 버전 관리 시스템에 존재하는 프로젝트를 메이븐 프로젝트로 체크아웃하는 기능(Checkout Maven Projects from SCM)부터 여러 개의 모듈을 관리할 수 있는 기능(Maven Module)까지 제공하고 있다. 여기에서는 프로젝트를 생성하기 위하여 “Maven Project” 메뉴를 선택하고 “Next” 버튼을 선택한다.


[ 프로젝트 생성 경로를 선택하는 화면 ]

위의 화면에서의 기본 설정은 “Create a simple project(skip archetype selection)”이 체크되어 있지 않은 상태이다.

기본 설정으로 다음 단계로 넘어가면 아키타입의 대화식 모드를 이용하여 프로젝트를 생성하는 과정이 나온다. 메이븐에서 기본으로 제공하는 아키타입을 이용하여 프로젝트를 생성할 경우 불필요한 소스 코드를 제거하고 JUnit 의존 관계 설정을 제거해야 한다. 특히 maven-archetype-webapp 아키타입의 경우 소스 폴더가 자동으로 생성되지 않아 추가적으로 생성해야 하는 불편함이 있다.

이 같은 불편함을 없애고 단순히 메이븐 기본 디렉토리를 포함하는 프로젝트를 생성하고 싶다면 위의 그림과 같이 “Create a simple project(skip archetype selection)”를 체크한 후 “Next” 버튼을 누르고 프로젝트와 관련한 정보를 입력한다.


[ 위키북 프로젝트에 대한 기본 정보를 입력하는 화면 ]

위의 그림에서 보는 바와 같이 위키북 프로젝트에서 사용할 Group Id, Artifact Id, Version, Packaging을 입력하고 Finish 버튼을 눌러 프로젝트를 생성한다.

[ m2eclipse 플러그인을 활용하여 생성한 위키북 프로젝트 ]
m2eclipse 플러그인을 기반으로 프로젝트를 생성할 경우 위의 그림에서 보는 바와 같이 기본 디렉토리를 가지는 템플릿 프로젝트가 생성된다. 위키북 프로젝트의 pom.xml 파일을 열어보면 위에서 입력한 정보를 제외하고는 아무런 설정 정보도 추가되어 있지 않다.
<project ...>
  <modelVersion>4.0.0</modelVersion>
  <groupId>net.javajigi</groupId>
  <artifactId>wikibook</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>wikibook</name>
</project>


3. m2eclipse 플러그인 저장소 설정
m2eclipse 플러그인을 설치하면 위의 그림에서 볼 수 있듯이 pom.xml 파일과 프로젝트의 좌측 상단에 푸른색으로 “M”자가 표시된다. 이는 m2eclipse 플러그인이 메이븐 기본 설정 파일을 인식한다는 뜻이다.

m2eclipse 플러그인을 설치하면 M2_REPO Classpath Variables를 자동으로 추가한다. m2eclipse 플러그인을 설치한 후 Window >> Perferences >> Java >> Build Path >> Classpath Variable메뉴로 이동해 보면 그림 6-18과 같이 M2_REPO가 “non modifiable”로 추가되어 있는 것을 알 수 있다.

[ m2eclipse 플러그인을 설치한 후의 M2_REPO 설정 ]

M2_REPO 변수를 m2eclipse 플러그인이 관리하고 있기 때문에 수정할 수 없는 상태로 관리된다. 위의 그림에서 확인할 수 있듯이 M2_REPO 값은 기본 로컬 저장소인 USER_HOME/.m2/repository 값으로 설정된다. 만약 로컬 저장소를 변경해서 사용하고 있다면 다음과 같이 로컬 저장소를 변경해야 한다.

먼저 테스트를 위하여 USER_HOME/.m2/settings.xml 파일의 로컬 저장소 설정을 다음과 같이 “D:\m2\repository” 디렉토리로 설정한다.

# 로컬 저장소를 D:\m2\repository 디렉토리로 설정하는 settings.xml 파일
<settings ...>
<localRepository>D:\m2\repository</localRepository>
[...]
</settings>

기본 로컬 저장소를 사용하지 않으면 먼저 Window >> Perferences >> Maven >> User Settings 메뉴로 이동한 후 Update Settings 버튼을 클릭한다.

[ m2eclipse 플러그인에서 로컬 저장소의 경로를 변경하는 화면 ]

Update Settings 버튼을 클릭하면 Local Repository의 값이 위의 그림과 같이 “D:\m2\repository”로 변경된다. Update Settings 버튼을 클릭할 경우 Local Repository의 값이 바로 반영되지 않는 경우가 있다. 이 때는 다른 메뉴에 접근한 후 다시 User Settings 메뉴로 이동해보면 settings.xml 파일에 설정한 로컬 저장소로 반영되어 있는 것을 확인할 수 있다.

로컬 저장소의 경로를 변경할 경우 Window >> Perferences >> Java >> Build Path >> Classpath Variable 메뉴에 설정되어 있는 M2_REPO도 변경해야 한다. M2_REPO의 값을 새로 설정한 로컬 저장소로 변경하려면 앞의 과정을 통하여 로컬 저장소를 변경한 후 이클립스를 재시작해야 하면 자동으로 반영된다.


4. m2eclipse를 활용한 메이븐 실행

m2eclipse를 설치한 다음 pom.xml 파일에서 오른쪽 클릭 >> Run As로 이동하면 메이븐에서 자주 사용하는 페이즈와 골을 실행할 수 있다. m2eclipse를 활용하여 메이븐 명령을 실행하려면 먼저 USER_HOME\.m2 디렉토리에 settings.xml 파일을 생성해야 한다. 루트 엘리먼트(<settings/>)를 가지는 settings.xml 파일을 생성하거나 MAVEN_HOME\conf 디렉토리의 settings.xml 파일을 복사한다.

[ m2eclipse에서 실행 가능한 페이즈와 Goal ]
위의 그림을 보면 clean, install, package등 자주 사용하는 메이븐 페이즈를 실행할 수 있도록 지원하고 있다. 만약 Run As 메뉴에서 기본으로 제공하지 않는 페이즈나 골을 실행하려면 위의 그림에서 “Maven build...”을 실행한다. “Maven build...”을 실행하면 명령 프롬프트에서 메이븐을 실행할 때와 똑같이 특정 플러그인의 골을 직접 입력해 실행할 수 있다.

[ m2eclipse로 메이븐을 빌드하는 화면 ]

이 기능을 활용하면 명령 프롬프트에서 빌드할 필요없이 이클립스에서 메이븐을 빌드할 수 있다. 이클립스에서 명령 프롬프트로 이동하지 않아도 되므로 유용하다.

메이븐을 빌드할 때마다 이전에 빌드했던 “eclipse:clean eclipse:eclipse”를 입력하는 것도 귀찮은 작업이 된다. 이클립스는 이전에 실행한 모든 명령들에 대한 이력을 관리한다. m2eclipse에서 실행한 결과는 Run >> Run History메뉴나 이클립스 상단의 단축 아이콘으로 접근할 수 있다.

[ 이전 m2eclipse 빌드 이력을 보는 화면 ]

<참고사항>
내가 m2eclipse를 즐겨 사용할 때는 메이븐 기반 프로젝트를 빌드하기 위하여 자주 사용하는 명령어를 등록해 사용했다. 예를 들어 다음과 같이 명령어를 등록해 사용할 수 있다.
 wikibook for eclipse(이클립스 기반 프로젝트로 전환) : eclipse:clean eclipse:eclipse
 wikibook for build(프로젝트 빌드) : clean test

프로젝트의 빌드 상태에 따라서는 특정 Goal을 실행해야 하는 상황이 발생할 수 있기 때문에 자주 사용하는 페이즈와 골 조합을 위와 같이 등록해 사용하면 유용하다.
</참고사항>


5. m2eclipse를 활용한 설정 파일 및 의존 관계 관리

m2eclipse 플러그인을 활용할 때 유용하게 사용할 수 있는 기능이 지금까지 명령 프롬프트상에서 명령을 실행하고 결과물을 확인했던 내용을 이클립스에서 명령어를 몰라도 좀 더 좋은 UI를 통해 확인할 수 있다는 것이다.

메이븐 기반 프로젝트에서 pom.xml 파일을 더블 클릭하면 pom.xml 파일의 소스 코드가 바로 나타나지 않고 Overview 화면이 기본으로 열리며, 여러 개의 탭 화면을 가지는 것을 확인할 수 있다. 이 각각의 탭 중에서 유용하게 사용할 수 있는 몇 가지 기능에 대하여 살펴보도록 하겠다.

첫째, Dependencies 탭은 해당 프로젝트와 의존 관계에 있는 라이브러리를 관리할 수 있도록 지원한다. 5장에서 http://mvnrepository.com/ 사이트에 접속해 라이브러리를 검색하고 추가하던 작업을 m2eclipse를 활용해 가능하다.

[ Dependencies 탭에서 spring-core 라이브러리를 추가하는 화면 ]























댓글 없음: