1. 빌드와 빌드도구
1.1 빌드란?
- 빌드는 컴파일보다 훨씬 많은 것을 의미한다.
- 빌드에서는 compile, testing, inspection, deploy등의 과정등이 포함 될 수 있다.
- 즉 소프트웨어가 응집력 있는 하나의 단위로써 작동하는지 확인하는 과정이라 할 수 있다.
- 빌드란 소프트웨어를 생성하고 테스트하고 검사하여 배포하기 위해 수행하는 행위의 집합이다.
1.2 빌드 도구의 기능
- 코드 컴파일 : 테스트를 포함한 소스코드 컴파일
- 컴포넌트 패키징 : 자바의 jar 파일이나 윈도우의 exe 파일 같은 배포할 수 있는 컴포넌트를 묶는 작업
- 파일 조작 : 파일과 디렉토리를 만들고 복사하고 지우는 작업
- 개발 테스트 실행 : 자동화된 테스트 진행
- 버전관리 도구 통합 : 버전관리 시스템 지원
- 문서 생성 : API문서(ex JAVA Doc)를 생성
- 배포 기능 : 테스트 서버(alpha, beta) 배포 지원
- 코드품질분석 : 자동화된 검사도구(findbug,checkstyle,pmd.)를 통한 코드 품질 분석
1.3 빌드 도구 Ant
- http://ant.apache.org/
- 가장 널리 사용되는 자바 빌드 도구로 2000년 Apache 에서 자신들이 쓰려고 출시하였다.
- 안정성이 좋고, 문서화가 잘 되어 있으며, 자바 프로젝트에서 가장 쓸만한 도구중에 하나이다.
- task라는 개념을 사용하며, 자바 소스 파일 컴파일, jar, war, ear, zip 파일의 생성, javadoc 생성, 파일이나 폴더의 이동 및 복사, 삭제, 작업에 대한 의존성 설정, 외부 프로그램 실행등의 기능을 지원한다.
1.4 빌드 도구 Maven
- http://maven.apache.org/
- Ant가 빌드 툴이라면 Maven는 어플리케이션 개발을 위하여 필요한 모든 작업을 추상화하여 지원하는 프로젝트 관리 툴이다.
- Maven 사이트에서는 Maven을 "소프트웨어 프로젝트 관리 및 도구"라 설명 한다.
- Maven은 어플리케이션 개발을 진행하면서 반복적으로 진행해왔던 작업들을 효율적으로 지원하기 위해 등장한 툴이다.
- 아주 적은 설정 만으로도 프로젝트를 빌드하고, 테스트를 실행하고, 품질 보고서를 생성할 수 있다.
- POM(Project Object Model)을 통해서 jar 파일의 의존성 관리, 빌드, 배포, 문서생성, Release 등을 관리 할 수 있다.
2. Maven과 Ant의 비교
2.1 Ant
장점
- target기능을 이용해서 세밀하게 빌드를 설정할 수 있다.
- 개발자에게 모든 자유를 주며, 복잡한 빌드환경에서도 적절히 대처할 수 있는 많은 task를 제공해 준다.
단점
- 미리 정해진 규칙이나 프로세스가 없기 때문에 모든것을 개발자가 정의해야 한다.
- 모든것을 개발자가 정의하다 보니깐 매우 복잡한 빌드 스크립트가 탄생하게 된다.
- build 스크립트의 재사용이 불가능하다.
- 프로젝트 종속(Dependency) 관계 및 개발자/소유자, 버젼, 사이트 홈페이지와 같은 메타 정보가 미비하다.
2.2 Maven
장점
- 프로젝트 빌드시 jar파일의 의존성을 쉽게 관리할 수 있다.
- 빌드 프로세스를 표준화하였고, 빌드 라이프사이클 phase를 이용해 작업을 쉽게 처리할 수 있다.
- 표준화된 디렉토리 레이아웃을 제공한다.
- 미리 제공된 plugin들을 활용해 거의 모든 작업을 수행 할 수 있다.
- java소스 파일과 resource 소스파일, test 소스파일들을 구조적으로 분리하게 되어 있다.
단점
- Maven이 Ant에 비해 추상화가 높기 때문에 Ant에 익숙한 개발자들이 처음 접근하기에 진입 장벽이 있다.
- 다양한 plugin들의 사용법을 숙지하기가 힘들다.
문서정보
- 이 문서는 구루비에서 작성하였습니다.
- 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 출처 : http://wiki.gurubee.net/pages/viewpage.action?pageId=26740432&
- 구루비 지식창고의 모든 문서는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.
출처 : http://wiki.gurubee.net/pages/viewpage.action?pageId=26740432
'Fundamental > Technical ' 카테고리의 다른 글
In-Line mode (1) | 2014.04.01 |
---|---|
가상화의 형태 - 하이퍼바이저[Hypervisor] (0) | 2014.03.11 |
하이퍼바이저 - Hypervisor (0) | 2014.03.11 |
GIT (0) | 2014.02.17 |
용어정리 (1) | 2014.02.14 |
댓글