기본 패턴
text
src/
main/
java/
test/
java/
pom.xml # Maven
build.gradle # Gradle설명
- Java 프로젝트는 언어 문법만으로 끝나지 않고, 소스 컴파일, dependency 다운로드, 테스트 실행, 패키징 같은 build 흐름이 늘 함께 갑니다. Maven과 Gradle은 이 흐름을 자동화하는 대표 도구입니다.
- Maven은 규약 중심(convention-heavy)입니다. 표준 디렉터리 구조와 lifecycle이 비교적 명확해서 입문자가 전체 흐름을 배우기 좋습니다. "정해진 방식대로 움직인다"는 느낌이 강합니다.
- Gradle은 더 유연하고 script 기반 조합이 쉬워서 대규모 프로젝트나 Android 쪽에서 많이 보입니다. 대신 처음엔 "무엇이 어디서 설정되는가"가 Maven보다 덜 눈에 들어올 수 있습니다.
- 중요한 것은 도구 취향보다, build 도구가 해결하는 문제를 이해하는 것입니다. dependency version 관리, test 실행, artifact 생성, 환경별 설정 분리가 build 도구의 핵심 역할입니다.
- Java를 계속 공부할 생각이라면
pom.xml이나build.gradle문법 자체보다src/main/java,src/test/java, dependency scope, build lifecycle 감각을 먼저 익히는 편이 훨씬 오래 갑니다.
빠른 정리
| 항목 | Maven | Gradle |
|---|---|---|
| 성격 | 규약 중심 | 유연한 script 기반 |
| 입문 난이도 | 구조 이해가 비교적 쉬움 | 유연한 만큼 추적이 더 필요 |
| 강점 | 표준 구조, 예측 가능성 | 확장성, 대형 프로젝트 적응력 |
| 공통 역할 | dependency, test, package, build 자동화 | dependency, test, package, build 자동화 |
주의할 점
Maven과 Gradle을 "설정 파일 문법"으로만 외우면 프로젝트가 커질수록 방향을 잃기 쉽습니다. 먼저 build 도구가 무엇을 자동화하는지, source/test/resource 구조가 왜 분리되는지부터 이해하는 편이 좋습니다.
참고 링크
3 sources