빌드도구란?
- 소스 코드를 컴파일, 테스트, 정적분석 등을 실히하여 실행 가능한 애플리케이션으로 자동 생성하는 프로그램
- 계속해서 늘어나는 라이브러리 자동 추가 및 관리
- 프로젝트를 진행하며 시간이 지남에 따라 라이브러리의 버전을 자동으로 동기화
배경
- 웹, 앱 프로그래밍 개발이 발전하며 어플을 개발함에 있어 필요한 라이브러리도 많아지게 되었다
이 많은 라이브러리를 직접 다운받아서 추가하여 사용하는 방법도 있지만 많은 번거로움이 이따른다
이때문에 발생한것이 빌드 도구이다.
종류
- Ant
- Maven
- Gradle
1. Ant
특징
- XML기반 빌드 스크립트를 개발
- 규칙이 없다
- 절차적이다 (명확한 빌드 절차 정의가 필요하다)
- 생명주기를 갖지 않아 각각의 Target에 대한 의존관계와 작업을 정의해 주어야 한다.
단점
- 유연성이 높으나 프로젝트가 복잡해지는 경우 Build 과정의 이해가 어렵다
- XML, Remote Repository를 가져올 수 없다.
- 스크립트의 재사용이 어렵다 !!
2. Maven
특징
- 프로젝트에 필요한 모든 종속성(Dependency)를 리스트의 형태로 Maven에게 알려서 종속성을 관리한다.
- XML, Repository를 가져올 수 있다. => 'Jar', 'Class Path'를 선언만 하면 직접 다운로드 할 필요가 없이 Repository에서
자동으로 필요한 라이브러리 파일을 불러와 준다.
단점
- 라이브러리가 서로 종속할 경우 XML이 복잡해진다
- 계층적인 데이터를 표현하기에는 좋지만, 플로우나 조건부 상황을 표현하기 어렵다.
- 편리하나 맞춤화된 로직 실행이 어렵다
3. Gradle
특징
- JVM기반의 빌드도구
- Ant와 Maven의 단점을 보완
- 오픈소스 기반의 Build 자동화 도구
- Groovy 기반 DSL로 작성한다.
장점
- 프로젝트 시작시 설정에 드는 시간을 절약할 수 있다.
'Software Engineering > Build Tool' 카테고리의 다른 글
BuildTool - Gradle 구성 파일 요약(init.gradle, settings.gradle, build.gradle) (0) | 2019.10.05 |
---|---|
BuildTool - Build란? (0) | 2019.10.05 |
Gradle - Intellij Build sync fail (Invalid gradle JDK Configuration found) (0) | 2019.02.02 |
Gradle-03) gradle 테스크란? (0) | 2018.11.11 |
Gradle-02) build.gradle 파일 구조와 분석 (2) | 2018.11.11 |