Maven 5 minutes

오픈소스 비즈니스 컨설팅
둘러보기로 가기 검색하러 가기

5분 안에 Maven 시작하기에서는 Getting Started in 5 Minutes를 번역한다.

설치 가이드

아래 설치 가이드는 Windows Server 2003을 기준으로 작성한 것 입니다. 설치 환경이 틀릴 경우에는 별도의 주석을 달아 주세요.

설치전 사전 준비 사항

Maven 설치

다운로드


  • apache-maven-2.0.8-bin.zip 파일의 압축을 풀어 d:/OpenBiz/11_tools/maven208 에 복사한다.


  • Maven의 지역 보관소(Local Repository)를 설정한다.
    • d:/OpenBiz/91_workspace/mavenRepository 디렉토리를 생성한다.
    • %MAVEN_HOME%/conf/settings.xml 파일에서 다음과 같이 수정한다.
<localRepository>file:///d:/OpenBiz/91_workspace/mavenRepository</localRepository>


  • Maven 설치 후 사용하기 위해서 필요한 환경을 설정한다.
    • M2_HOME=d:/OpenBiz/11_tools/maven208
    • PATH=d:/OpenBiz/11_tools/maven208/bin (기존 PATH에 추가)
    • MAVEN_OPTS=-Xmx512m (필요시 설정)
바탕화면의 "내 컴퓨터"에서 오른 마우스를 클릭한 후 "속성"을 선택한다. "고급" 탭에서 하단에 있는 "환경 변수" 버튼을 누른다. 위에 명시한 환경 변수를 추가 또는 수정한다.

환경 설정

  • 도스창에서 설치된 Maven이 정상적으로 동작하는지 확인한다.
  1. "시작" 메뉴를 누른 후 "실행" 메뉴를 선택한다.
  2. 입력 화면에서 "cmd"를 입력하고 "확인" 버튼을 눌러 도스창을 띄운다.
  3. 다음 명령을 도스창에서 실행한다.
C:\> mvn --version
Maven version: 2.0.8
Java version: 1.6.0_04
OS name: "windows 2003" version: "5.2" arch: "x86" Family: "windows"


  • 네트워크 설정과 관련해서 추가 설정이 필요할 수도 있다. 이는 Maven Configuring Guide를 참고하라.


Maven 프로젝트 작성

Maven 프로젝트는 사용자 프로젝트 생성 디렉토리인 d:/OpenBiz/22_project에서 생성하고 관리한다.

도스창에서 다음 명령을 실행하여 my-app라는 프로젝트를 생성한다. Maven 설치 후 처음 실행할 경우에는 Plugin 등 필요한 파일을 지역 보관소에 다운로드하기 때문에 시간이 많이 걸릴 수 있다. 외부 보관소에서 다운로드 시 시간이 오래 걸려 오류가 발생할 경우에는 명령을 여러번 다시 실행하면 정상 처리된다.

cd d:
cd d:/OpenBiz/22_project
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app


프로젝트의 생성이 완료되면 d:/OpenBiz/22_project 아래에 artifactId에서 지정한 my-app 디렉토리가 생성된다. 향후 모든 작업은 my-app 디렉토리에서 진행해야 한다.

cd my-app

my-app에 생성된 프로젝트 표준 디렉토리 구조는 다음과 같다.

my-app
|-- pom.xml
`-- src
    |-- main
    |   `-- java
    |       `-- com
    |           `-- mycompany
    |               `-- app
    |                   `-- App.java
    `-- test
        `-- java
            `-- com
                `-- mycompany
                    `-- app
                        `-- AppTest.java

프로젝트에서 개발한 소스 코드는 src/main/java 디렉토리에 보관하고 테스트 코드는 src/test/java 디렉토리에 보관한다. pom.xml 파일은 Maven의 프로젝트 오브젝트 모델(POM, Project Object Model)을 저장한다.

POM (Project Object Model)

Maven의 프로젝트 설정 정보는 pom.xml 파일에 저장된다. pom.xml은 프로젝트를 생성(build)하는데 필요한 중요한 정보를 포함하고 있다. POM은 매우 크고 복잡할 수 있는데 POM을 사용하기 위해 복잡한 구조를 다 이해할 필요는 없다.

위에서 실행한 명령을 사용하여 생성된 pom.xml 파일은 다음과 같다.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>my-app</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

Maven을 사용하여 무엇을 할 수 있을까?

archetype에 기반하여 간단한 프로젝트를 생성하기 위해 archetype:create라는 Maven goal을 실행했다. archetype은 goal을 포함하는 플러그인 인데 Ant의 task와 비슷한 역할을 한다. 플러그인은 일반적인 공통 목적을 위한 goal의 집합이다. 예를 들면 jboss-maven-plugin은 다양한 jboss 항목을 관리하기 위한 플러그인이다.

프로젝트 생성

mvn package

위 명령은 다양한 활동을 출력할 것이며 최종적으로 다음과 같은 것을 출력할 것 이다.

 ...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 seconds
[INFO] Finished at: Thu Oct 05 21:16:04 CDT 2006
[INFO] Final Memory: 3M/6M
[INFO] ------------------------------------------------------------------------

처음 실행한 명령어(archetype:create)와 다르게 지금은 package만을 인수로 주고 실행 하였다. 여기서 package goal이 아니라 phase이다. phase는 순서적인 빌드 라이프사이클을 구성하는 하나의 단계이다. phase가 주어졌을 경우 Maven은 상위 단계에 있는 모든 phase를 실행한다. 예를 들어 우리가 compile phase를 실행하면 실제로 compile phase는 다름과 같은 순서로 실행된다.

  1. validate
  2. generate-sources
  3. process-sources
  4. generate-resources
  5. process-resources
  6. compile

다음 명령을 사용하여 컴파일되고 팩키지된 JAR 파일을 테스트 할 수 있다.

java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App

결과는 다음과 같을 것 이다.

Hello World!

Running Maven Tools

Maven 작업 단계

다음은 가장 일반적으로 실행되는 디폴트 라이프사이클이다.

validate 프로젝트와 제공되는 정보가 올바른지 검증
compile 프로젝트의 소스 코드를 컴파일
test 단위 테스트 프레임워크를 사용하여 컴파일된 소스 코드를 테스트. 테스트를 위해 코드가 패키지 되거나 이관될 필요는 없다.
package 컴파일된 코드를 배포하기 위해 JAR 파일 등과 같은 형태의 배포판을 만든다.
integration-test 통합 테스트를 위한 환경으로 패키지를 디플로이 함
verify 품질 수준을 만족하기 위해 패키지를 검사
install 로컬 보관소에 패키지를 보관
deploy 최종 완료된 팩키지를 다른 개발자 또는 프로젝트와 공유하기 위해 리모트 저장소로 배포

위에 언급한 라이프사이클 외에 다음 2개의 라이프사이클이 더 있다.

clean 프로젝트에서 임시적으로 생성된 것을 모두 삭제
site 프로젝트를 위한 site 문서를 생성

작업 단계(Phase)는 goals로 이루어지는데, 팩킹되는 프로젝트의 종류에 따라 특정 goals가 실행된다. 예를 들면 프로젝트 종류가 JAR일 경우 package는 jar:jar를 실행하고 WAR일 경우 package는 war:war를 실행한다.

재미있는 사실은 phase와 goal이 순차적으로 실행되어 진다는 것 이다.

mvn clean dependency:copy-dependencies package

위 명령은 clean, dependency:copy-dependencies, package의 순서로 실행될 것 이다.

사이트 생성하기

mvn site

위 phase는 프로젝트 POM의 정보를 사용하여 target/site 아래에 사이트 문서를 생성한다.

결론

이 문서는 Mavan 대한 아주 짧은 가이드이다. 자세한 사항을 알고 싶으면 Maven Getting Started Guide를 참조하라.