Maven과 Gradle은 자바(Java) 프로젝트의 빌드(build) 및 의존성 관리 도구입니다. 둘 다 프로젝트의 컴파일, 테스트, 패키징, 배포, 의존성 관리를 자동화하여 개발자의 생산성을 높여주는 역할
✅ Maven의 역할과 기능
📌 역할
- 프로젝트 빌드 자동화: 소스코드를 컴파일하고, JAR/WAR로 패키징함.
- 의존성 관리: 필요한 라이브러리를 pom.xml에 정의하면 자동으로 다운로드.
- 표준화된 프로젝트 구조 제공: Maven은 정해진 디렉토리 구조와 빌드 라이프사이클을 사용.
- 플러그인 기반 확장 가능성: 다양한 기능은 플러그인으로 확장 가능.
📌 주요 파일
- pom.xml (Project Object Model)
→ 프로젝트 설정, 의존성, 플러그인 등을 정의하는 XML 파일
📌 주요 기능
기능 설명
| 의존성 관리 | 외부 라이브러리 자동 다운로드 및 버전 관리 |
| 빌드 라이프사이클 | clean, compile, test, package, install, deploy 등의 명령어 제공 |
| 멀티 모듈 지원 | 하나의 루트 프로젝트 아래 여러 모듈 관리 가능 |
| 리포지터리 연동 | Maven Central 또는 사설 저장소 연동 가능 |
✅ Gradle의 역할과 기능
📌 역할
- Maven과 같은 빌드 및 의존성 관리 도구이지만, 스크립트 기반으로 더 유연하고 빠른 빌드를 제공함.
- Groovy 또는 Kotlin DSL로 빌드 스크립트를 작성.
📌 주요 파일
- build.gradle 또는 build.gradle.kts
→ 프로젝트 빌드 설정, 의존성, 태스크 정의 등을 스크립트로 작성
📌 주요 기능
기능 설명
| 의존성 관리 | Maven과 동일하게 라이브러리 관리 가능 |
| 유연한 빌드 스크립트 | 조건부 빌드, 커스텀 태스크 등 동적 빌드 설정 가능 |
| 성능 최적화 | 캐싱 및 병렬 빌드 기능 제공 |
| 다양한 언어 지원 | 자바, 코틀린, 안드로이드, Groovy 등 다양한 플랫폼 지원 |
✅ Maven vs Gradle 비교
항목 Maven Gradle
| 빌드 스크립트 언어 | XML (pom.xml) | Groovy/Kotlin (build.gradle) |
| 학습 난이도 | 쉬움 (정형화) | 다소 어려움 (스크립트 기반) |
| 성능 | 느린 편 | 빠름 (캐시, 병렬 빌드 지원) |
| 유연성 | 낮음 | 높음 |
| 사용 분야 | 기업용 자바 프로젝트에 많음 | 안드로이드 개발에서 주로 사용 |
✅ 요약
- Maven: 표준화된 구조와 간편한 설정이 장점인 전통적인 빌드 도구
- Gradle: 유연하고 빠른 빌드 성능을 가진 현대적인 빌드 도구
'탐구하기' 카테고리의 다른 글
| RestAPI란 무엇일까?? (1) | 2025.06.02 |
|---|---|
| 빌더패턴은 무엇일까? (0) | 2025.06.02 |
| @SpringBootApplication은 어떤역할을 하는 어노테이션일까? (0) | 2025.06.02 |
| 프록시 패턴과 AOP에 대해서 연관성 (0) | 2025.05.22 |
| Dependency Injection는 무엇일까? (0) | 2025.05.22 |