소스코드를 컴파일, 테스트, 정적 분석, 실행가능한 어플리케이션으로 자동 생성하는 프로그램.
라이브러리를 직접 다운받아와서 작업하는 것이 번거로움이 많기 떄문에, 이런 것을 자동화해주는 툴이다.
또한, 빌드 도구없이 IDE를 통해 빌드하고 운영환경에 배포하면,
따라서, 이러한 수동배포를 특정 환경에서 자동배포로서 바꾸는 부분에 있어서도, 정형화된 빌드 도구를 이용하는 장점이 될 수 있다.
또한, 빌드의 과정이 단순히 컴파일 뿐만 아니라 여러가지 많은 작업들이 수반되기 때문에 (javadoc 생성, 빌드번호 획득, 테스트 실시 및 처리, 릴리즈 등등…) 이런 것들을 일관적으로 진행하기 위해서 빌드 도구를 사용한다.
초기 자바 빌드도구로 많이 사용하였다.
어플리케이션 빌드, 테스트, 배치를 기술하기 위해서 빌드 파일을 사용한다. XML 형식으로 되어있는 빌드 파일에 선언적으로 작성, 전체 과정을 기술하는 것이 아니라 단계를 선언하는 방식으로 되어있어 재사용, 유지보수가 편하다.
실행
ant [option] [target [target2 [target3] … ]]
build.xml
파일을 현재 디렉토리부터 시작해 상위까지 이동해가면서 검색 후 실행한다.단점
Ant의 대안으로 만들어진 빌드 툴.
프로젝트에 의존되는 라이브러리들이 pom.xml에서 의존 관계를 정의한다.
pom.xml
에서 프로젝트의 구성, 프로젝트에서 사용하는 외부 플러그인과 그 의존관계를 정의할 수 있다.
자세한 pom 구조는 여기서 확인 가능 하다. Maven 저장소와 의존성 관리
여기서 정의한 플러그인은 Maven Repository (java 패키지 저장소, pypi 같은거)를 통해 Remote로 자동으로 다운로드하여, 로컬에서 관리할 수 있다.
jar
, classPath
를 선언만 하면 직접 다운로드할 필요 없이 Repository에서 가져와준다.단점
Ant와 Maven을 보완한 빌드 도구.
Implementation / compile
compile이랑 implementation일 때의 gradle 동작이 다른데,
Compile - 해당 모듈과 직접 / 간접 의존하는 모든 모듈 재빌드
Implementation - 해당 모듈과 직접 의존하는 모듈 재빌드
하지만 Gradle 3.0 버전 부터 compile이 deprecated 되었다고. 그래서 implementation을 쓰는게 좋다.