Maven은 자바 프로젝트의 빌드(build)를 자동화 해주는 빌드 툴(build tool)이다.
Maven에 관한 자세한 내용은 아래 링크에 정리되어 있다.
Gradle이란 기본적으로 빌드 배포 도구(Build Tool)이다. 안드로이드 앱을 만들때 필요한 공식 빌드시스템이기도 하며
JAVA
,C/C++
,Python
등을 지원한다.
기본 메이븐의 경우 XML로 라이브러리를 정의하고 활용하도록 되어 있으나, Gradle의 경우 별도의 빌드스크립트를 통하여 사용할 어플리케이션 버전, 라이브러리등의 항목을 설정 할 수 있다.
장점으로는 스크립트 언어로 구성되어 있기때문에, XML과 달리 변수선언
, if-else
, for
등의 로직이 구현가능하여 간결하게 구성 가능하다.
라이브러리 관리 : 메이븐 레파지토리를 동일하게 사용할 수 있어서 설정된 서버를 통하여 라이브러리를 다운로드 받아 모두 동일한 의존성을 가진 환경을 수정할 수 있다. 자신이 추가한 라이브러리도 레파지토리 서버에 올릴 수 있다.
프로젝트 관리 : 모든 프로젝트가 일관된 디렉토리 구조를 가지고 빌드 프로세스를 유지하도록 도와준다.
단위 테스트 시 의존성 관리 : junit 등을 사용하기 위해서 명시한다.
사용 예시
// 자바를 컴파일하기 위해 java plugin을 설정한다.
apply plugin: 'java'
// application으로 컴파일하기 위해 설정한다.
apply plugin: 'application'
//저장소를 입력하는 섹션이다. 주로 Maven의 저장소를 그대로 사용한다.
repositories {
mavenCentral()
}
//종속성을 입력하는 섹션이다. 기존에는 compile이 있었으나 3.0버전부터 deprecated 되었다.
dependencies {
//'group:name:version' 순으로 적는다. group: 'junit', name: 'junit', version: '4.12'식으로도 가능하다.
api 'com.google.guava:guava:22.0' //간접 의존, 직접 의존하는 모든 모듈을 rebuild 한다
implementation 'junit:junit:4.12' //직접 의존하는 모듈만 rebuild 한다.
}
application {
// 메인 class의 위치와 이름을 적는다.
mainClass = 'package.name.AppClass'
}
빌드 속도가 Maven에 비해 10~100배 가량 빠르다.