Ant가 워낙 널리 쓰이다 보니 Maven을 설명할때 "Ant 보다 좋다.", "Ant의 확장판이다." 처럼 Ant와 비교할때가 많습니다. 하지만 Maven을 Ant와 같은 빌드 스크립트로 이야기하기에는 Maven의 기능이 너무 많습니다.
Maven이 Ant가 가진 많은 단점을 보완하는것은 맞습니다. J2EE 프로젝트가 원체 다양해 지다 보니 Ant의 스크립트도 복잡해졌습니다만 Ant 스크립트는 단순한 XML 구조이기 때문에 이를 수용하기에 적합하지 않았습니다. 그래서 maven은 많은 좋은 사례들을 참고하여 미리 고울을 정의해 놓았습니다. Ant에서 스크립트를 만드느라 고생해야 하는걸 maven에서는 하지 않아도 됩니다.
즉 maven을 사용하게 되면 공통된 프로젝트 구조를 정의해 놓고 이 컨벤션에 맞는 빌드 프로세스를 사전에 정의해 놓음으로서 프로젝트와 빌드 프로세스를 분리할 수가 있는 것 입니다. maven의 빌드 라이프 사이클은 따로 살펴볼만한 가치가 있습니다.
m2라고 불리는 maven2는 maven1을 기반으로 좀 더 정형화된 빌드 라이프사이클 관리를 위해서 새롭게 개발된 버전입니다. 여기서는 maven1.02를 사용하겠습니다.
POM에 대한 기본적인 내용만 알아보겠습니다. POM은 Project Object Model의 약자입니다. maven1에서는 Project.xml이라는 이름으로 정의했으나 maven2에서는 Pom.xml이라는 이름을 갖습니다. POM에는 dependencies, task, goal 등을 정의합니다. 모든 POM은 기본 POM인 Super POM을 상속받습니다.
여기서도 일단 Maven을 Ant 처럼 프로젝트를 빌드하는 용도로만 사용하려고 합니다. 그러기 위해서는 먼저 Maven에 대해 알아야 합니다. 직접 만들까 하다가 뒤져보니 비슷한 강좌가 있어서 링크만 걸겠습니다.Maven이 Ant가 가진 많은 단점을 보완하는것은 맞습니다. J2EE 프로젝트가 원체 다양해 지다 보니 Ant의 스크립트도 복잡해졌습니다만 Ant 스크립트는 단순한 XML 구조이기 때문에 이를 수용하기에 적합하지 않았습니다. 그래서 maven은 많은 좋은 사례들을 참고하여 미리 고울을 정의해 놓았습니다. Ant에서 스크립트를 만드느라 고생해야 하는걸 maven에서는 하지 않아도 됩니다.
즉 maven을 사용하게 되면 공통된 프로젝트 구조를 정의해 놓고 이 컨벤션에 맞는 빌드 프로세스를 사전에 정의해 놓음으로서 프로젝트와 빌드 프로세스를 분리할 수가 있는 것 입니다. maven의 빌드 라이프 사이클은 따로 살펴볼만한 가치가 있습니다.
m2라고 불리는 maven2는 maven1을 기반으로 좀 더 정형화된 빌드 라이프사이클 관리를 위해서 새롭게 개발된 버전입니다. 여기서는 maven1.02를 사용하겠습니다.
POM에 대한 기본적인 내용만 알아보겠습니다. POM은 Project Object Model의 약자입니다. maven1에서는 Project.xml이라는 이름으로 정의했으나 maven2에서는 Pom.xml이라는 이름을 갖습니다. POM에는 dependencies, task, goal 등을 정의합니다. 모든 POM은 기본 POM인 Super POM을 상속받습니다.
- Maven 강좌 1 - Maven 설치 및 최초 프로젝트 생성
- Maven 강좌 2 - Maven 개요, 잇점, POM 설정 파일 기본
- Maven 강좌 3 - Maven 디폴트 디렉토리 구조 및 사용할 수 있는 Goals
- Maven 강좌 4 - Maven을 이용하여 Dependency 라이브러리 관리 방법
- Maven 강좌 5 - Maven 기반의 Eclipse 프로젝트 생성 및 활용
- Maven 강좌 6 - Artifactory를 이용하여 Maven Repository 세팅하기
- Maven 강좌 7 - Maven을 이용하여 Appfuse 프로젝트 생성하기
- Maven 자바지기 강좌
- eclipse용 maven플러그인에서 tools.jar 의존성 해결하기
- Maven 다운로드
- Maven 설치
- MAVEN_HOME 환경변수 추가
- PATH에 Maven의 bin 폴더 추가
- 테스트
maven이 제대로 설치되었는지 확인하기 위해서 콘솔창에서 다음과 같이 실행합니다.
maven -vmaven으로 새로운 프로젝트를 생성합니다.
maven genappgenapp는 maven의 기본 프로젝트 구조를 바탕으로 src폴더, conf폴더와 같은 새로운 프로젝트 스켈레톤을 생성해 줍니다. 이 구조는 원하는 대로 변경이 가능합니다.
maven에서 설정을 위해 사용하는 파일은 project.xml과 project.properties 2개입니다. project.xml은 라이센스, 개발자, 소스코드 관리, 프로젝트 개요, 메일링 리스트등의 프로젝트 상세내역을 정의하며, project.properties는 프록시 설정과 같은 정보가 들어갑니다.
maven.proxy.host = proxy.company.commaven은 플러그인이라는 확장구조를 지원합니다. 이 덕분에 maven이 자체작으로 가지고 있는 고울(goal)이외에 새로운 고울을 추가할 수 있습니다. ant의 타겟(target)에 해당하는 것이 maven의 고울입니다.
maven.proxy.port = 80
maven.proxy.username = username
maven.proxy.password = password
예를 들어 jar라는 플러그인의 jar 고울을 실행하고 싶다면 아래와 같이 입력하면 됩니다. 하지만 줄여서 그냥 jar 라고 해도 됩니다. 이를 shortcut이라 부릅니다.
maven jar:jarmaven이 사용가능한 모든 플러그인으 보고 싶다면 -g 옵션을 주면 됩니다.
maven jar
maven -g-P 옵션과 플러그인명을 주면 플러그인 내의 모든 고울을 볼 수 있습니다.
maven -P jarjava 소스를 컴파일 하려면 java 플러그인의 compile 고울을 사용합니다.
maven java:compileJUnit 테스트 코드를 갖고 있다면 test 플러그인을 사용합니다.
maven testJavaDoc 문서를 생성합니다.
maven -X test
maven javadoc프로젝트 정보를 나타내는 사이트를 만들어 줍니다.
maven site
Maven의 컴맨드 라인 명령어에 익숙하지 않으신 분들은 Command Line Reference를 참고하시면 이해에 도움이 될거 같습니다. 이 정도면 maven으로 할 수 있는 일이 뭐라는 정도는 잘 아셨을거 같습니다. 실제 작업은 다음 포스트에 적어보겠습니다.
'Development > 자동화' 카테고리의 다른 글
| MDA툴 AndroMDA - 개요 (0) | 2008/03/06 |
|---|---|
| JUnit 테스트 코드 생성 도구 AgitarOne - 테스트 코드 생성하기 (0) | 2008/03/04 |
| Maven으로 프로젝트 빌드하기 (0) | 2008/02/21 |
| UltraEditor로 루비 개발환경 설정하기 (0) | 2008/02/21 |
| JUnit 테스트 코드 생성 도구 AgitarOne - 설치 및 실행 (0) | 2008/02/15 |
| JUnit 테스트 코드 생성 도구 AgitarOne - 소개 (0) | 2008/02/15 |
TAG maven


