Build
- 소스코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정 또는 그에 대한 결과물
- 우리가 작성한 소스코드(java), 프로젝트에서 쓰인 각각의 파일 및 자원 등(.xml, .jpg, .jar, .properties)을 JVM이나 톰캣같은 WAS가 인식할 수 있는 구조로 패키징 하는 과정 및 결과물이라 할 수 있다.
- 예를 들어 게임회사에서 게임을 개발하는 것은 '개발'이며, 게임 사용자가 자신의 노트북에 게임을 설치하고 실행하는 것을 '빌드'라고 한다.
- 빌드 과정을 도와주는 도구.
- 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 프로그램.
- 빠른기간동안 계속해서 늘어나는 라이브러리 추가, 프로젝트를 진행하며 라이브러리의 버전 동기화의 어려움을 해소하고자 등장
- 초기의 java 빌드도구로 Ant를 많이 사용했으나 최근 많은 빌드도구들이 생겨나 Maven이 많이 쓰였고, 현재는 Gradle이 많이 쓰인다.
(Ant는 스크립트 작성도 많고ㅡ 라이브러리 의존관리가 되지 않아 불편함.)

Ant
- 자바 빌드 도구로서 XML 기반의 스크립트를 사용한다.
- CVS, SVN 체크아웃에서부터 컴파일, 테스트, 디플로이까지의 빌드 프로세스를 자동화할 수 있다.
- JUnit과 완벽히 통합되어 있다.
- project, target으로 구성되며 target 안에 task를 구현한다.
- Ant를 사용하려면 build.xml 파일을 작성하고 실행해야 한다.

Maven
- Maven은 자바용 프로젝트 관리도구로 Apache Ant의 대안으로 만들어졌다.
- Ant와 마찬가지로 프로젝트의 전체적인 라이프 사이클을 관리하는 도구이며, 많은 편리함과 이점이 있어 널리 사용되고 있다.
- XML 스트립트를 기반으로 하며, 필요한 라이브러리를 특정 문서(pom.xml)에 정의해 놓으면 내가 사용할 라이브러리 뿐만 아니라 해당 라이브러리가 작동하는데에 필요한 다른 라이브러리들까지 관리하여 네트워크를 통해서 자동으로 다운받아 준다.
- Maven은 중앙 저장소를 통한 자동 의존성 관리를, 중앙 저장소(아파치재단에서 운영 관리)는 라이브러리를 공유하는 파일 서버라고 볼 수 있고, Maven은 자기 회사만의 중앙 저장소를 구축할 수 있다.
- 간단한 설정을 통한 배포 관리가 가능하다.

Gradle
- 최신 자바 빌드 도구로 그루비(Grrovy) 문법을 사용한다.
- Ant와 Maven의 장점을 결합하고 단점을 보완한 도구이다.
- Gradle은 Buile.gradle 파일에 스크립트를 작성하며, XML 기반 스크립트보다 관리가 편리하다.
간단 비교
| ㅤㅤAntㅤㅤ |
1. xml로 관리. 빌드 스크립트가 복잡함. 스크립트가 정형화 되어있지 않아 유지보수 어려움. 2. 외부 라이브러리 관리 불가.(관리하기 위해서는 ivy 필요) |
| ㅤㅤMavenㅤㅤ |
1. xml로 관리. 빌드 스크립트가 정형화 되어있음. 복잡한 빌드 스크립트 커스텀 어려움. 2. 외부 라이브러리 관리 가능. 3. 멀티 프로젝트는 상속 방식으로 지원 |
| ㅤㅤGradleㅤㅤ |
1. Groovy 언어 사용 2. 빌드 속도 빠름. 3. 멀티 프로젝트 빌드 지원 |
출처: https://blog.naver.com/rorean/222236619759
https://velog.io/@willie/Ant-Maven-Gradle%EC%9D%98-%EC%B0%A8%EC%9D%B4