빌드 도구는 소스 코드에서 실행 가능한 애플리케이션 생성을 자동화하는 프로그램이다. 빌드는 컴파일, 링크 및 패키징하여 사용하거나 실행 가능한 형식으로 통합한다.
Maven은 Java용 프로젝트 관리도구로 Apache의 Ant 대안으로 만들어졌다.
빌드 중인 프로젝트, 빌드 순서, 다양한 외부 라이브러리 종속성 관계를 pom.xml파일에 명시한다.
Maven은 외부저장소에서 필요한 라이브러리와 플러그인들을 다운로드 한다음, 로컬시스템의 캐시에 모두 저장한다.
출처: https://maven.apache.org/repository/index.html
Apacahe Maven과 Apache Ant에서 볼수 있는 개념들을 사용하는 대안으로써 나온 프로젝트 빌드 관리 툴이다. (완전한 오픈소스)
Groovy 언어를 사용한 Domain-specific-language를 사용한다. (설정파일을 xml파일을 사용하는 Maven보다 코드가 훨씬 간결하다.)
Gradle은 프로젝트의 어느부분이 업데이트되었는지 알기 때문에, 빌드에 점진적으로 추가할 수 있다.
Gradle은 작업 의존성 그래프를 기반으로하는 반면 Maven은 고정적이고 선형적인 단계의 모델을 기반으로 합니다.
maven 의 경우 멀티 프로젝트에서 특정 설정을 다른 모듈에서 사용하려면 상속을 받아야 하지만 gradle 은 설정 주입 방식을 제공한다.
성능 면에서 둘 다 다중 모듈 빌드를 병렬로 실행할 수 있습니다. 그러나 Gradle은 어떤 작업이 업데이트되었는지 확인하기 때문에 증분 빌드를 허용합니다. (수정된 부분만 다시 빌드함)
종속성을 관리할 때 Gradle과 Maven은 모두 동적 및 전이 종속성을 처리하고 타사 종속성 캐시를 사용하고 POM 메타데이터 형식을 읽을 수 있습니다.
Gradle은 API 및 구현 종속성과 관련하여 본질적으로 동시 안전 캐시(concurrent safe caches)를 허용한다. 이는 Gradle의 엄청난 장점이다. 또한 캐시된 종속성과 함께 리포지토리 메타데이터를 유지하므로 동일한 캐시를 사용하는 둘 이상의 프로젝트가 서로 덮어쓰지 않고 체크섬 기반 캐시가 있으며 캐시를 리포지토리와 동기화할 수 있습니다.