RenameThisPage MavenQuickstart 등의 이름으로 바꿀 것을 제안합니다. ---- [[TableOfContents]] == 개요 == Maven은 Apache (Jakarta) project들의 홈페이지들에 보면 "built by maven"이라 써있는 모든 프로젝트의 빌드 시스템이다. Ant를 이용한 빌드에 몇몇 유용한 플러스 알파를 제공한다. 이 문서는 현재 기본적인 요소만 다룰 예정이며 추후에 관련 사항들을 추가할 예정이다. == 장점 == * 마치 데비안의 패키징 시스템과 비슷한 의존성 해결 및 필요한 패키지(jar) 자동 다운로드 지원 * 각종 유용한 플러그인 지원(J2EE/Eclipse/project web site 등등) * 자동화된 unit test 지원 * 유연성(plugin들로 구성되어 있으며 필요한 plugin을 직접 만들 수도 있다). == 설치 == * [http://maven.apache.org/start/download.html 다운로드 페이지]에서 다운로드 후 설치(압축풀기). * 환경변수 설정 * 압축을 푼 디렉토리를 `MAVEN_HOME`으로 설정 * `PATH`에 `$MAVEN_HOME/bin` 추가 * 저장소 생성 {{{#!vim $MAVEN_HOME/bin/install_repo.sh $HOME/.maven/repository }}} == 테스트 == * cvs로 적당한 project를 check out한다(maven으로 build하는 project여야한다.^^). * project home에서 다음 중에 하나를 실행해본다. * {{{maven jar:jar}}} * {{{maven dist:build}}} 아마 필요한 jar들을 다운로드하고 build하고 unit test하는 과정이 진행된 후에 성공했다는 메시지가 나올 것이다. 저장소 디렉토리의 내용을 한번 살펴보면 빌드과정에서 다운로드 받은 jar들이 쌓여있는 것을 확인할 수 있다. == Plugin? Goal? == maven은 보통 다음의 형식으로 실행된다. {{{#!vim maven plugin:goal }}} === Plugin === Maven의 plugin으로 `$MAVEN_HOME/plugins`에 들어 있는 것들이다. === Goal === Maven의 plugin이 지원하는 동작(?)이다. 하나의 plugin은 n개의 goal(들)과 default goal을 가질 수 있다. === 설치된 plugin/goal 확인 === 다음의 명령으로 설치된 모든 plugin과 plugin의 goal들을 확인할 수 있다. {{{#!vim maven -g }}} == Eclipse 연동 - eclipse plugin 사용 == * 테스트용 project 준비(다음 중 편한 것을 하나 선택). * maven으로 build하는 project를 eclipse의 workspace 아래로 복사. * eclipse의 cvs기능을 이용해서 "check out as project"로 project 하나를 테스트용으로 check out. * project home 디렉토리에서 다음을 실행한다. {{{#!vim maven eclipse:generate-project maven eclipse:generate-classpath }}} project home 디렉토리에 `.project`와 `.classpath` 파일이 생성된 것을 확인할 수 있다. * eclipse에 MAVEN_REPO Classpath Variable 추가(Window > Preferences > Java > Classpath Variables). 물론 이건 위에서 설정했던 저장소 디렉토리이다. * Package Explorer에서 프로젝트 선택 후 right click, refresh!! 모든 소스폴더와 jar들이 제자리에 있는 것을 확인할 수 있을 것이다. == Links == * [http://maven.apache.org Maven Homepage] * [http://www.theserverside.com/articles/article.tss?l=MavenMagic Maven 활용(from scratch?)] == TODO == maven from scratch 정도가 필요하지 않을까? ---- CategoryDevelopment