maven과 gradle은 모드 빌드 관리 도구이다
소스코드 파일을 컴퓨터에서 실행할 수 있는 독립적인 형태로 변환하는 과정괴 결과 말한다.
작성한 소스코드, 프로젝트에 쓰인 각각의 파일 및 자원을 JVM 혹은 Tomcat 같은 WAS가 인식할 수 있도록 패키징하는 과정 및 결과물이다.
자원: .xml, .jpa, .jpg
JVM: JAva Virtural Machine
WAS: Web Application Server
'빌드 시작' --> 소스코드를 컴파일해서 .class로 변환
--> resource를 .class가 참조할 수 있는 적절한 위치로 옮김
--> META-INF와 MANIFEST.MF들을 하나로 압축
소스코드에서 애플리케이션을 생성하면서 여러가지 외부 라이브러리를 사용하는데, 빌드 관리 도구는 사용자 관리 필요 없이 필요한 라이브러리들을 자동으로 관리한다.
Build Tool: Ant, Maven, Gradle
Java 전용프로젝트 관리도구, Lifecycle관리 목적 빌드 도구, Apache Ant의 대안, 아파치 라이센스로 배포되는 오픈 소스 소프트웨어

Lifecycle 관리도구로, 정해진 Lifecycle에 의하여 작업 수행한다.
전반적인 프로젝트 관리 기능 포함한다.

claean
: 빌드 시 생성되어 있던 파일들 삭제
validate
: 프로젝트 올바른지 확인 후, 필요한 모든 정보 사용할 수 있는 지 확인
complie
: 프로젝트 소스코드를 컴파일하는 단계
test
: 단위 테스트를 수행하는 단계
test 실패 시 실패로 처리하고 스킵 가능하다
package
: 실제 컴파일된 소스코드와 리소스들을 jar, war 등의 파일 배포를 위한 패키지로 만든다
verify
: 통합 테스트 결과에 대한 검사를 실행하여 품질 기준을 충족하는 지 확인
site
: 프로젝트 문서와 사이트 작성, 생성하는 단계
deploy
: 만들어진 package 를 원격 저장소에 release하는 단계
Maven은 필요한 라이브러리를 pom.xml에 정의한다 ---> 프로젝트 모델링

Apache Ant ==> 비교적 자유도 높음

Maven을 대체할 수 있는 프로젝트 구성 관리 및 범용 빌드 Tool
Ant Builder과 Groovt script 기반으로 구축되어 기존 Ant 역할과 배포 스크립트 기능 모두 사용 가능
==> Spring Boot, Android에 사용
빌드속도: Maven에 비해 10~100배 빠르다.
--> Java, C / C++, Python 등 지원
JVM에서 실행되는 스크립트 언어
JVM에서 동작하지만 소스코드 컴파일 X
Java와 호환되며, JAva class file 들을 Groovy class로 사용 가능
Java 문법과 유사