IntelliJ를 사용하여 웹 프로젝트를 생성하면 다음과 같은 화면을 볼수 있다.
그중 Build system을 보면 Maven과 Gradle이 있는데 이 둘은 뭘까..?

Maven 과 Gradle은 모두 빌드관리 도구이다.
빌드는 소스코드 파일을 컴퓨터에서 실행할 수 있는 독립적인 형태로 변환하는 과정과 결과를 말한다. 즉 우리가 작성한 소스코드, 프로젝트에서 쓰인 각각의 파일 및 자원을 jvm이나 톰캣 같은 WAS가 인식할 수 있도록 패키징하는 과정 및 결과물을 말한다.
빌드 도구란, 소스코드에서 애플리케이션을 생성하면서 여러가지 외부 라이브러리를 사용하는데, 빌드 관리도구는 사용자가 관리할 필요 없이 필요한 라이브러리들을 자동을 관리한다.
빌드 도구가 수행하는 작업
이런 작업을 해주는 것들이 처음에 말한 Maven과 Gradle인 것이다.

Maven은 Java전용 프로젝트 관리 도구로, Lifecycle관리 목적 빌드 도구이며, Apache Ant의 대안으로 만들어졌다.
💡 Apache Ant
▶️ xml 기반의 스크립트를 사용, 유연하고 자유도가 높음 ⇒ 때론 관리에 어려움이 있다.
▶️ 규칙, 표준이 없어 무한한 커스텀 가능 ⇒ 난이도가 높음
스크립트 정형화 X ⇒ 유지보수 어려움
** 외부 라이브러리 관리 불가
정해진 Lifecycle에 의하여 작업을 수행
전반적인 프로젝트 관리 기능을 포함
<라이프 사이클>
clean → validate → compile → test → package → verify → install → site → deploy
clean : 빌드 시 생성되어있었던 파일들을 삭제
validate : 프로젝트가 올바른지 확인하고 필요한 모든 정보를 사용할 수 있는지 확인
complie : 프로젝트 소스코드를 컴파일
test : 단위 테스트를 수행, 테스트 실패 시 빌드 실패로 처리하며 스킵 가능
package : 실제 컴파일된 소스 코드와 리소스들을 jar, war 등의 파일의 배포를 위한 패키지로 만듦
verify : 통합 테스트 결과에 대한 검사를 실행하여 품질 기준을 충족하는지 확인
site : 프로젝트 문서와 사이트 작성, 생성
deploy : 만들어진 package를 원격 저장소에 release( Apache Ant에서는 remote repository에release하는 것이 불가능했었다.)
pom(Project Object Model)이 담고있는 것들

Maven을 대체할 수 있는 프로젝트 구성 관리 및 범용 빌드 툴
Ant Builder와 Grooby script를 기반으로 구축되어 기존 Ant의 역할과 배포 스크립트의 기능을 모두 사용가능하며 스프링부트와 안드로이드에서 사용
❇️ 빌드 속도가 Maven에 비해 10 ~ 100배 가량 빠르고, Java, C/C++, Python등을 지원한다.
💡 **Groovy** JVM에서 실행되는 스크립트 언어 JVM에서 동작하지만 소스코드를 컴파일 할 필요 없음 Java와 호환되며, Java class file들을 Groovy class로 사용 가능하다 Java 문법과 유사하여 빌드 처리를 관리할 수 있다.💡 Gralde wrapper
환경에 상관 없이 프로젝트에서 제공하는 환경으로 빌드할 수 있도록 해주는 Gradle 내장 task
명시된 Gradle 버전을 호출하고 명시된 버전의 gradle이 없을 경우 자동으로 다운로드 및 설치하여 빌드를 해주는 스크립트
즉, 수동 설치 프로세스를 수행할 필요가 없어진다 ⇒ 짱 편리해짐

Maven과 Gradle에 대한 전반적인 개념을 알아보았다.
사실 아직 나에게는 빌드가 빠르고 테스트 속도가 빠르다는 것 외에는 와닿는 점이 없다… ㅎㅎ
아직 규모있는 프로젝트를 진행해보지 않았고 이제 막 입문했기 때문에 체감하려면 시간이 좀 걸릴것으로 보인다. 하지만 지금 미리 큰틀만이라도 알고 있으면 실제로 차이를 실감할때 더 극대화되고 기억에 오래남을 것이라고 생각된다.
내용을 정리하면서 100프로 이해하지는 못했지만 이해 못한 부분은 다시 차근차근 공부해 나가보도록 하겠다.