기존의
빌드
툴
1)Make
Makefile 안에서
룰을 이용해서 의존관계를 표현
변수로 매크로를 지원하고 접미사 관련 룰 등을 명시
2)Ant
자바로 구현됨, 자바 프로젝트 빌드에 적합
XML 파일(build.xml)을 사용하여 빌드 프로세스와 의존성 정의
개발자가 임의로 Target을 만들고 원하는 의존관계를
설정할 수 있다
3)Gradle
Ant나 Maven과 비슷한 컨셉
XML대신 DSL을 통해 프로젝트 정의
Groovy 기반
기존의
빌드
툴이 제공하는
기능
Preprocessing
Compilation
Packaging
Testing
Distribution
Maven이란?
•아파치의 오픈 소스 빌드 툴이다(프로젝트 관리 툴이기도 하다).
•대규모
프로젝트에서 발생하는 빌드 관련 문제를 해결하기 위해 등장했다.
•Yiddish(이디시어-유대인어)의 뜻으로는 지식의 축적자
(축적된 지식으로 이해하는 사람)라고 한다.
(축적된 지식으로 이해하는 사람)라고 한다.
•빌드, 문서화, 리포팅, 라이브러리 관리, 배포 등의 지식을 축적하고 관리하는 툴이다.
•메이븐은 설정보다 관례(CoC;Convention over
Configuration)라는
컨셉이다.
•지정된
규칙에 따라 코드를 위치시키면 컴파일, 패키징, 문서화 등의
나머지 작업들을 자동으로 수행한다.
나머지 작업들을 자동으로 수행한다.
Maven의
목적
•개발자가
짧은 기간에 개발의 전체 상태를 이해 할 수 있도록 한다
•빌드 진행을 쉽게 만든다.
•일정한
빌드 환경을 제공한다.
•양질의
프로젝트 정보를 제공한다.
•최적의
개발을 위한 가이드라인을 제공한다.
•새로운
기능을 투명하게 적용시킬 수 있다
Maven과
Ant의
비교
Apache Ant
|
Apache Maven
|
기존의
make와
같은 툴의 단점을 보완한
XML 기반의 빌드 툴
하나이상의
정의된 xml 파일
스크립트에 의해 동작
xml
파일에
정의된 target을
수행하고
target은 task수행 |
Ant와
비슷하나 프로젝트 관리를 위한 프로젝트 관리 툴
모든
프로젝트를 특정 구조와 지원되는
task work-flow들의 일련으로 간주
Pom.xml에
프로젝트 구조와 동작 정의
프로젝트의
구조와 work-flow는
정해진
컨벤션에 맞춰 동작 |
Ant은
생명주기(lifecycle)을
가지지 않는다.
Goal들과
Goal 의존성을
정의 해 주어야만 한다.
각각의
Goal에
대해 직접 작업의
순서를
추가해 주어야 한다 |
명령을
실행했을 때 호출되는 생명주기를 가진다.
Phase
마다
일련의 순차적인 생명주기
단계를 실행하도록 한다.
생명주기를
통한 과정 때문에 수많은
기본 플러그인 goal을 실행한다 |
Ant은
절차적이다.
Ant에게
무엇을 하고 언제 해야 할지는
정확히 알려줘야만 한다. |
Maven은
선언적이다.
pom.xml
파일을
만들고 디렉터리에 소스
파일을 넣으면 알아서 처리한다 |
스크립트
실행 없이는 빌드를
추론하기 어렵다.
복잡한
스크립트는 부담스러운 과제가
될 수도 있음 |
이미
완성된 프로젝트에 적용하기 어렵다.
자율성이
떨어진다는 의견도 있다
|
스크립트가
재사용 가능하지 않다
|
재사용
가능한 플러그인, 저장소
|
댓글 없음:
댓글 쓰기