Post
KO

[공유] MAVEN 이란?

MAVEN 정리하기 전에 이 블로그에는 MAVEN에 대한 개념 및 핵심내용에 대해서 정리한다. Eclipse 플러그인을 활용하여 Spring 개발과 같은 MAVEN 활용법은 검색을 하면 많이 나오므로 여기서는 설명하지 않을 것이다. 왜냐하면 활용법은 MAVEN에 대한 기본 및 핵심을 명확히 알고 있으면 충분히 응용하여 사용가능하다고 생각 하기 때문이다. 또한 “sontype 이 만든 Maven 핵심가이드” 책의 내용을 주로 정리한다.

■  MAVEN에 대한 정의는 아래 링크 사이트 참조

http://slipp.net/wiki/pages/viewpage.action?pageId=4489306#id-2주차-Maven을활용한빌드환경-Maven이란

■ MAVEN 개념적인 모델

▷ 디펜던시(dependency) 관리

그룹 식별자, 산출물 식별자와 버전으로 구성된 중복되지 않은 코디네이트들을 프로젝트에 정의한다. 프로젝트에 관련 있는 디펜던시를 선언하기 위하여 이러한 코디네이트(※Coordinate)들을 이용할 수 있다.

※ Coordinate 는 일반적으로 좌표를 의미한다. 따라서 좌표라고 번역할 수 있지만, 메이븐에서 코디네이트라함은 메이븐이 의존성을 관리하기 위한 단위를 유일하게 구분하고 식별하기 위한 표기 방식이다. 일반적인 좌표의 경우 X축과 Y축을 바탕으로 유일한 위치를 표기할 수 있지만 메이븐의 coordinate는 groupId:artifactId:packagin:version의 조합으로 유일성을 나타낼 수 있다. 즉 일반적으로 사용되는 좌표와는 표기법에 차이가 있기 때문에 메이븐적인 의미를 살리고자 코디네이트라고 번역한다.

▷ 원격 저장소

의존성 관리와 관련하여, 메이븐 산출물들의 저장소를 생성하기 위하여 메이븐 프로젝트 객체 모델(Project Object Model, POM)안에 정의된 코디네이트를 사용할 수 있다.

▷ 빌드로직의 전역적인 재사용

플러그인은 POM에 따라 재실행될 수 있도록 개발 되었는데, 플러그인의 동작 시 어떠한 외부 파일도 참조하지 못 하도록 설계되어 있다. 모델 안에서는 모든 것들이 추상화 되어 있어 플러그인의 설정이나 맞춤(customization)은 모델 안에서 이루어진다.

▷ 툴에 대한 이식성과 통합

이클립스나 넷빈즈, 그리고 InstallJ와 같은 툴은 프로젝트에 대한 정보를 찾을 수 있는 공통 공간을 가지고 있다. 메이븐이 출현하기 전에는 모든 통합 개발 환경은 핵심적인 커스텀 POM을 서로 다른 방법으로 저장하였다.

▷ 프로젝트 산출물들의 쉬운 검색과 필터링

넥서스(Nexus)와 같은 툴은 POM 안의 정보 저장소를 사용하여 저장소의 내역들을 인덱스하고 검색하는 것을 허용한다.

즉 메이븐은 소프트웨어 프로젝트를 정확하게 의미적으로 설명할 수 있는 기반을 제공하였다.

■ Maven과 Ant 비교표

MAVEN

 ANT

Ant와 비슷하나 프로젝트 관리를 위한 컨셉으로 만들어진 프로젝트 관리툴

모든 프로젝트를 특정한 구조와 지원되는 task work-flow들의 일련으로 간주

Pom.xml에 프로젝트 구조와 동작 정의

프로젝트의 구조와 work-flow는 정해진 컨벤션에 맞춰 동작

기존의 make와 같은 빌드의 단점을 보완한 XML 기반의 빌드툴,하나이상의 정의된 xml 파일 스크립트에 의해 동작 xml 파일에 정의된 target을 수행하고 target은 task수행각 작업은 정의된 순서에 따라 진행되어 짐  간결한 프로젝트 정의, 다른 개발도구나 서버환경에서 자동으로 통합 가능함

쉽게 구조를 검사할수 있고, 결과물에 대해 이해한 상태에서 work-flow를 수행해 볼수 있다.

무슨일을 하고 무엇에 의존하는지 명확하게 정의할수 있도록 xml 최적화 Ant가 실행하는 모든 것들은 Ant 스크립트에서 확인할수 있음

익숙하지 않은 사용자도 쉽게 접근 가능

메이븐 시작시 이해과정 필요, 이미 완성된 프로젝트에 적용하기 어려움

자율성이 떨어진다는 의견도 있다

숙련된 개발자도 스크립트 실행없이는 빌드를 추론하기 어렵고

복잡한 스크립트는 부담스러운 과제가 될수도 있음

재사용 가능한 플러그인, 저장소

스크립트가 재사용 가능하지 않음

매우 빠른 속도로 발전하고 있음

발전속도가 느려짐

MAVEN이나 ANT의 스크립트 파일은 XML 형식으로 되어 있으며 각자 기술하는 규약이 있어 거기에 맞게 작성을 하면된다.

[출처]** MAVEN 이란? 작성자 야쿨트
This article is licensed under CC BY 4.0 by the author.