현재까지 프로젝트를 진행하며 프로젝트 관리 도구로 Gradle만 사용해봤는데, 현재 회사 프로젝트에서는 Maven으로 프로젝트 관리 도구를 사용하기에 Gradle, Maven이 무슨 역할을 하는지 알아보고, 이 둘을 비교해보려고 한다.
setting.xml pom.xml라이프 사이클
jar, war 과 같은 파일등의 배포를 위한 패키지로 만드는 단계 → 타켓 directory 만듦→ 코드를 수정한 후 package하면 오래걸림
→ 오래걸리니 target 파일의 코드를 바꾸게 하면 package를 할 필요가 없음
→ 무지성 clean → package
pom.xml 에 저장함 ⇒ 프로젝트 모델링<modelVersion>4.0.0</modelVersion>
<groupId>com.회사이름</groupId>
<artifactId>모듈이름</artifactId> <!-- jar, war 파일 이름을 의미 -->
<version>artifact의 버전</version> <!-- 0.0.1-SNAPSHOT = 아직 개발 중 -->
<packaging>artifact의 포맷</packaging>
<properties>...</properties> <!-- 값을 가진 상수 ${propertyname} 이런식으로 참조 가능 -->
<repositories>...</repositories> <!-- 라이브러리 받아올 저장소 지정 -->
<dependencies>...</dependencies>
<!-- 의존성은 POM에서 가장 중요함 (일관성 있는 프로젝트에 필수)
Maven은 dependencies 요소에 명시된 의존성을 자동 다운하고,
해당 의존성이 의존하는 또다른 의존성(transitive dependencies) 까지 가져 옴
외부에서 jar 파일을 일일이 다운받아 관리하던 것에비해 매우 개선됨-->
<build>...</build> <!-- 플러그인 목록 -->
Maven이 자바 기반 프로젝트를 관리하는 도구라는 것을 알게 되었다.
Maven은 프로젝트를 빌드하고, 패키징하며, 배포하는 과정을 관리하고 필요한 라이브러리 의존성까지 효율적으로 관리해준다.
그렇다면 여기서 말하는 빌드(Build)란 무엇일까?

XML 혹은 특정 도메인 언어를 사용함Ant Maven Gradle 이 있음💡 빌드 자동화란 ?
1. 종속성 다운로드
2. 소스코드를 바이너리 코드로 컴파일
3. 바이너리 코드를 패키징
4. 테스트 실행
5. 프로덕션 시스템에 배포
를 스크립팅하거나 자동화하는 행위
정리하자면,
Groovy는 JVM에서 실행되는 스크립트 언어
JVM에서 동작하지만, 소스코드를 컴파일 할 필요없음
Java와 호환되며, Java class file을 Groovy class로 사용 가능함
Java와 문법 유사
1. 가독성이 좋다 : 코딩에 의한 **간결한 정의**가 가능하므로 가독성이 좋다.
2. 재사용에 용이 : 설정 주입 방식(Configuration Injection)을 사용하므로 재사용에 용이하다.
3. 구조적인 장점 : Build Script를 Groovy 기반의 DSL(Domail Specific Language)를 사용하여 코드로서 설정 정보를 구성하므로 구조적인 장점이 있다.
4. 편리함 : Gradle 설치 없이 Gradle wrapper를 이용하여 빌드를 지원한다.
5. 멀티 프로젝트 : Gradle은 멀티 프로젝트 빌드를 지원하기 위해 설계된 빌드 관리 도구이다.
6. 지원: Maven을 완전 지원한다.

스크립트 길이와 가독성 면에서는 Gradle이 우세하다
Build와 테스트 실행 결과 Gradle이 더 빠르다