Java테스트와 빌드

Maven, Gradle, 프로젝트 구조

Java 프로젝트에서 Maven과 Gradle이 무엇을 해 주는지, dependency 관리와 build 흐름을 어떤 관점으로 이해하면 좋은지 정리합니다.

마지막 수정 2026년 3월 22일

기본 패턴

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 감각을 먼저 익히는 편이 훨씬 오래 갑니다.

빠른 정리

항목MavenGradle
성격규약 중심유연한 script 기반
입문 난이도구조 이해가 비교적 쉬움유연한 만큼 추적이 더 필요
강점표준 구조, 예측 가능성확장성, 대형 프로젝트 적응력
공통 역할dependency, test, package, build 자동화dependency, test, package, build 자동화

주의할 점

Maven과 Gradle을 "설정 파일 문법"으로만 외우면 프로젝트가 커질수록 방향을 잃기 쉽습니다. 먼저 build 도구가 무엇을 자동화하는지, source/test/resource 구조가 왜 분리되는지부터 이해하는 편이 좋습니다.

참고 링크

3 sources