글
들어가며
maven 에 관한 문서를 찾아보다가 아래 사이트에서 상당히 괜찮은 문서를 찾았다. 아래 사이트를 따라하면서 maven 을 이해해보도록 하겠다.
http://www.sonatype.com/books/maven-book/reference/public-book.html
설치하기
eclipse 에서 maven 을 지원하는 플러그인이 나와있다 업데이트 주소는 아래와 같다
이클립스 메뉴의 Help-Install New Software 에 들어가서 위의 URL 을 입력하고 설치하기 바란다.
프로젝트 만들기
m2eclipse 를 설치하면 위와같이 3가지 형태의 maven 프로젝트를 만들수 있는데 Maven Project 를 만들어 선택하고 Next 를 누르자.
maven 은 다양한 archetype을 지원하는데 여기서 archetype 란 기본적인 프로젝트 셋팅 이라고 보면된다. 우리는 셋팅이 하나도 되어있지 않은 프로젝트를 생성할것이기 때문에 archetype 를 선택하지 말고 skip 하도록 Create a simple project 를 체크하고 Next 를 누른다.
Group Id 는 java 의 package 와 같은 개념으로 보면 된다.
Artifact Id 는 메이븐 프로젝트의 이름으로 이 값이 만들어졌을때 이클립스 프로젝트 명이 된다.
Name 과 Description 은 해당 프로젝트의 설명 이다.
일단 위와같이 입력하고 Next 를 누른다.
dependencies 설정하는 부분이 나오는데 현재는 없음으로 그냥 Finish를 누른다.
위와같은 형태의 프로젝트가 생성된것을 확인할수 있을것이다.
MAVEN 프로젝트 구조
프로젝트 디렉토리를 확인해보면 아래와 같다.
simple/
pom.xml
src/
main/
java/
resources/
test/
java/
resources/
target/
classes/
test-classes/
이 디렉토리 구조는 maven 표준 디렉토리 구조이다. 이제 의미를 알아보도록 하겠다.
simple/ - 디렉토리명은 artifact id 의 값과 일치한다.
pom.xml - 모든 maven 프로젝트는 Project Object Model (POM) 이라는 이름의 셋팅파일을 같는다.
main/ – 이 디렉토리는 프로그램의 모든 소스파일과 리소스 파일이 들어가는 디렉토리 이다. 예를들어 properties 파일같은경우 resources 디렉토리에 집어넣으면 된다.
test/ – 이 디렉토리는 junit 테스트 프로그램이 위치하게 된다.
HELLO 프로그램하기
우리의 maven 프로젝트에 아래 프로그램을 집어넣는다. package 가 아까 설정했던 group id 와 같은것을 유념해서 디렉토리를 만든후에 작성하도록 한다.
package net.cranix;
public class Hello {
public static void main(String args[]) {
System.out.println("Hello Maven World!");
}
}
다 작성했다면 프로젝트에 마우스오른쪽 버튼 눌러서 Run As-maven package 를 차례로 클릭한다.
콘솔창에 무언가 뜨고 조금 지나면 BUILD SUCCESSFUL 이라는 결과가 출력된다.
과연 무엇이 바뀐것일까. 프로젝트 네비게이터에서 F5 키를 눌러서 리플래쉬 시켜보면 새로생긴 파일과 디렉토리가 보인다.
확인해보면 아래와 같다.
target/
classes/
net/
cranix/
Hello.class
maven-archiver/
pom.properties
test-classes/
simple-0.0.1-SNAPSHOT.jar
위와 같이 .jar 파일이 생성된 것을 알 수 있다.
테스트 하기
테스트를 하기 위해서는 junit 라이브러리가 필요하다. maven 에서는 이런 의존관계 설정이 쉽게 되는데 pom.xml 파일을 열어서 Dependencies 탭에 가서 추가만 해주면 된다.
위 버튼을 눌러서 아래와같이 검색하자. 알아서 리모트에있는 라이브러리를 검색해서 리스팅 해준다. 원하는 junit 를 선택하고 scope 를 test 로 셋팅한다음 OK 버튼을 누른다.
그럼 아래와 같이 추가된 것을 확인할 수 있으며 저장을 눌러서 적용하자.
이제 라이브러리도 받았으니 테스트 소스만 만들면 된다. 테스트를 위해서는 테스트를 원하는 클래스의 위치를 test 폴더에다가 만들고 *Test 형태로 클래스를 만들어 주면 된다. 예를 들어 Hello 클래스면 HelloTest 라는 클래스를 만들어 주면 된다.
위와 같이 HelloTest.java 파일을 위치시켰다.
HelloTest 파일의 내용은 아래와 같다.
package net.cranix;
import junit.framework.TestCase;
public class HelloTest extends TestCase{
public HelloTest(String app) {
super(app);
}
public void testHello() {
assertTrue(true);
}
}
이제 테스트를 수행하려면 패키지이름에 마우스오른쪽버튼 누르고 Run As-maven test 를 클릭하면 된다. Console 창에 테스트가 수행되는 화면을 확인할 수 있을 것이다.
프로그램 실행하기
Run As – Maven build 를 차례로 클릭해서 아래와 같이 설정한다. 파라메터에 mainClass 지정해 주는 것도 잊지 말자.
Run 을 누르게 되면 Console 화면에 실행되는 결과를 볼 수 있다.
[INFO] Searching repository for plugin with prefix: 'exec'.
[INFO] Attempting to resolve a version for plugin: org.codehaus.mojo:exec-maven-plugin using meta-version: LATEST
[INFO] Using version: 1.1.1 of plugin: org.codehaus.mojo:exec-maven-plugin
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building simplename
[INFO]
[INFO] Id: net.cranix:simple:jar:0.0.1-SNAPSHOT
[INFO] task-segment: [exec:java]
[INFO] ------------------------------------------------------------------------
[INFO] [exec:java]
Hello Maven World!
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 second
[INFO] Finished at: Sun Aug 16 00:48:28 KST 2009
[INFO] Final Memory: 1M/8M
[INFO] ------------------------------------------------------------------------
마치며
요즈음에는 자바기반 프로젝트를 하게 되면 거의 필수적으로 아파치 같은 공개 라이브러리를 쓰게 된다. 그러나 이런 라이브러리 역시 다른 라이브러리를 사용하는 것이 대부분이다. 이러다 보니 몇 개의 라이브러리만 가져다 써도 나중에 배포할 때는 의존관계를 따져가며 상당히 귀찮은 작업을 해야 한다. maven 은 이런 귀찮은 작업을 상당히 줄여줄 것으로 기대된다.
'웹 > maven' 카테고리의 다른 글
maven-jetty-plugin 포트 설정하기 (3291) | 2009.09.03 |
---|---|
maven 에서 encoding 설정하기 (844) | 2009.09.03 |
eclipse maven 으로 tomcat 어플리케이션 만들기 (73) | 2009.08.17 |
eclipse 에서 간단한 maven 프로젝트 만들기 (create 에서 assembly 까지) (49) | 2009.08.16 |
maven 이란 (37) | 2009.08.15 |
RECENT COMMENT