0Pricing
Java Academy · 강의

Maven 프로젝트 구조

POM, 수명 주기, 의존성을 알아봅니다

Maven 프로젝트 구조은(는) CoddyKit의 무료 Java Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Java Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Java Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

Maven 프로젝트 구조

Maven은 하나의 원칙, 즉 설정보다 관례를 중심으로 설계된 빌드 도구이자 의존성 관리자입니다. 표준 구조를 따르면 설정을 거의 하지 않아도 대부분의 작업이 수행됩니다. 이 레슨에서는 구조, POM, 의존성 관리를 다룹니다.

표준 디렉터리 구조

Maven은 고정된 구조를 사용합니다.

  • src/main/java — 운영 소스 코드
  • src/main/resources — 운영 리소스
  • src/test/java — 테스트 소스 코드
  • target/ — 빌드 출력물(생성됨)

POM

Maven 프로젝트의 핵심은 pom.xml인 프로젝트 객체 모델입니다. XML 형식으로 좌표, 의존성, 플러그인, 빌드 설정을 선언합니다.

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0.0</version>
  <packaging>jar</packaging>
</project>

좌표: GAV

모든 아티팩트는 groupId, artifactId, version(GAV)으로 식별됩니다. 이 좌표는 프로젝트와 가져오는 모든 의존성의 이름을 고유하게 지정합니다.

의존성 선언

의존성은 <dependencies> 안에 나열합니다. Maven은 Maven 중앙 저장소 같은 저장소에서 의존성과 그 전이 의존성을 다운로드해 로컬 캐시에 저장합니다.

<dependencies>
  <dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>5.10.0</version>
    <scope>test</scope>
  </dependency>
</dependencies>

의존성 범위

범위는 의존성이 클래스 경로에 포함되는 시점을 제어합니다.

  • 컴파일 — 모든 경우(기본값)
  • 제공 — 컴파일할 때만 포함되며 실행 시에는 컨테이너가 제공합니다.
  • 실행 — 실행과 테스트에는 포함되지만 컴파일에는 포함되지 않습니다.
  • 테스트 — 테스트 컴파일과 실행에만 포함됩니다.

전이 의존성

A가 B에 의존하고 B가 C에 의존하면 Maven은 C를 자동으로 제공합니다. 이것이 바로 전이성입니다. 버전이 충돌하면 Maven은 의존성 트리에서 가장 가까운 정의를 기준으로 해결합니다.

빌드 수명 주기

Maven은 단계로 구성된 순서가 있는 수명 주기를 정의합니다. 기본 수명 주기에는 다음 단계가 순서대로 포함됩니다. validate, compile, test, package, verify, install, deploy. 한 단계를 실행하면 그보다 앞선 모든 단계도 실행됩니다.

일반 명령

  • mvn compile — 주 소스를 컴파일합니다.
  • mvn test — 단위 테스트를 실행합니다.
  • mvn package — JAR/WAR을 target/에 빌드합니다.
  • mvn install — 다른 프로젝트에서 사용할 수 있도록 아티팩트를 로컬 저장소에 복사합니다.

로컬 저장소

다운로드한 아티팩트는 ~/.m2/repository에 캐시됩니다. 이후 빌드에서는 다시 다운로드하지 않고 캐시를 재사용합니다. mvn install은 자체 아티팩트를 해당 위치에 저장하므로 인접 프로젝트가 이를 의존성으로 사용할 수 있습니다.

다중 모듈 프로젝트

<packaging>pom</packaging>을 포함하는 상위 POM에는 하위 <modules>를 나열할 수 있습니다. Maven은 의존성 순서에 따라 모듈을 빌드하므로 대규모 시스템에서 한 곳의 설정과 버전을 공유할 수 있습니다.

빠른 확인

Maven 구조에 대한 이해도를 확인해 보세요.

복습

Maven의 기초를 배웠습니다.

  • 표준 src/main/java 구조를 사용하는 설정보다 관례
  • POM에서 GAV 좌표, 의존성, 플러그인을 선언합니다.
  • 범위(컴파일, 제공, 실행, 테스트)가 클래스 경로에서의 가시성을 제어합니다.
  • 의존성은 전이적이며, 충돌은 가장 가까운 정의를 기준으로 해결됩니다.
  • 순서가 있는 수명 주기에서는 한 단계를 실행하면 그보다 앞선 모든 단계도 실행됩니다.

자주 묻는 질문

“Maven 프로젝트 구조” 강의는 무료인가요?

네 — “Maven 프로젝트 구조” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Java Academy 강의 전체를 잠금 해제할 수 있습니다. Java Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“Maven 프로젝트 구조”에서 뭘 배우나요?

POM, 수명 주기, 의존성을 알아봅니다 브라우저에서 직접 실행하는 실습 코드로 Java Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Java Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Java Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“Maven 프로젝트 구조” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Java Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Java Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Maven 프로젝트 구조
  2. Maven 플러그인과 목표
  3. Gradle 기초
  4. 빌드 도구 선택
← Java Academy(으)로 돌아가기