Java2EE Framework/Maven

Maven 설명

본클라쓰 2010. 6. 12. 10:12

 

 Maven 은 유대어로 누산지식을 뜻하며, 자카르타 터빈(turbine) 프로젝트에서 단순한 빌드 프로세스를 위해 시작되었다. 각 각의 프로젝트에는 각 각의 Ant 빌드 파일이 있는데, 각 각은 약간씩 다르고, JAR 파일도 약간 다른 파일들이 CVS에 체크되어 있어서 표준화하기 위한 프로젝트로 프로젝트 구성의 명확한 정의와 프로젝트 정보를 쉽게 공개하기 위한 방안으로 시작된 프로젝트이다. 즉, Ant의 발전형이다.

 

 

Ant 와 비교하여 Maven의 장점

  • 정형화된 절차 제공 : Ant는 모든 과정을 사용자가 작성해야 하지만, Maven은 컴파일, 패키지, 태스트 등 작업 프로세스를 정형화 시키고 이를 준수하도록 강제한다. 프로젝트의 소스 트리 구성도 패턴을 따르도록 제시하고 있다.
  • 라이브러리 의존성 해결을 자동화 : 오픈 소스 라이브러리인 경우 Maven은 중앙 저장소(central repository)에 모두 저장하고 있어서, 의존성이 있는 라이브러리의 명세만 입력해주면, 자동으로 다운로드하여 class path에 걸어주기 때문에 따로 처리할 필요가 없다.
  • 라이브러리 관리 편의성 : 보통 소스를 개발할 때, 라이브러리를 SCM(Software Configuration Management) 툴에서 관리하는데, 이는 불필요한 공간을 낭비하게 할 뿐아니라, 버전 별 관리도 어렵게 한다. Maven에서는 라이브러리 전용 레파지토리를 제공하므로, 통합관리가 가능하다.

 

Maven의 목표

  • 빌르 처리를 쉽게 만들기
  • 통일된 빌드 시스템 공급
  • 프로젝트 정보의 퀄리티 공급
  • 최상위 개발 가이드 라인 제공

 

 

■ maven 사용하기

 

 Ant에서는 build.xml 파일에 프로젝트의 빌드, 태스크, 디폴로이 등을 기술한다면, Maven에서는 pom.xml 파일을 이용한다. pom.xml 에는 다음과 같은 정보를 저장하고 있다.

 

- 프로젝트 정보 : 프로젝트의 이름, 개발자 등

- 빌드 정보 : 플러그인 등 빌드의 관련된 설정을 기술

- 의존성, 연관성 정보 : 의존 프로젝트(모듈), 상위 프로젝트, 포함하고 있는 하위 모듈 등을 기술 

 

 

기본적인 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.0http://maven.apache.org/maven-v4_0_0.xsd">

 

    <!-- 프로젝트 정보 -->
    <modelVersion>4.0.0</modelVersion>
    <groupId>MavenTestProject</groupId>
    <artifactId>MavenTestProject</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>

 

    <!-- 빌드 정보 -->
    <build>
        <plugins>
            <plugin>
                <!-- java 1.5 이상의 문법을 지원하기 위해서는 다음 설정이 필요하다. -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

 

    <!-- 의존성 정보 -->
    <dependencies>
        <dependency>
            <!-- 서블릿 소스를 컴파일 하기 위해 필요하다. -->
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>


</project>

 

참 고 출 처 : http://alexk.springnote.com/pages/3501753