의존성 관리의 작동 원리 — 읽기 자료
pom.xmlMaven 프로젝트의 설정 파일. 어떤 라이브러리가 필요한지 목록을 작성. 「장보기 목록」 비유.<dependency> 태그로 추가.옛날 자바 프로젝트는 jar 파일을 직접 다운로드, lib 폴더에 넣고, 클래스패스 등록을 일일이 했습니다. 라이브러리 하나가 또 다른 라이브러리를 필요로 해서 「의존성 지옥」이 만들어졌습니다.
Spring 을 쓰려면 spring-core, spring-beans, spring-context, commons-logging, aop, ... 수십 개의 jar 가 필요. 하나라도 빠지면 NoClassDefFoundError. 직접 관리는 거의 불가능.
사용자는 pom.xml 에 라이브러리 이름과 버전을 적습니다. Maven 이 알아서 인터넷에서 다운로드해 프로젝트에 연결합니다.
<project>
<!-- 내 프로젝트 식별자 -->
<groupId>com.example</groupId>
<artifactId>myapp</artifactId>
<version>1.0</version>
<!-- 추가할 라이브러리 -->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.30</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.13</version>
</dependency>
</dependencies>
</project>
<groupId> — 보통 회사·도메인 (예: org.springframework)<artifactId> — 라이브러리 이름 (예: spring-context)<version> — 버전 (예: 5.3.30)내가 spring-context 한 줄을 추가하면, Maven 은 다음 것들도 자동으로 함께 가져옵니다:
덕분에 우리는 큰 그림만 적으면 됩니다.
pom.xml 을 수정한 뒤에는 반드시:
📦 프로젝트 우클릭 → Maven → Update Project
이걸 빠뜨리면 코드는 맞아도 빨간 줄(컴파일 오류)이 사라지지 않습니다. 학생들이 가장 자주 막히는 지점입니다.
| 항목 | Maven | Gradle |
|---|---|---|
| 설정 | XML 기반 | Groovy/Kotlin DSL |
| 빌드 속도 | 상대적으로 느림 | 빌드 캐시·병렬로 빠름 |
| 시장 점유 | 전통 강세 | 신규 프로젝트 선호 |
본 과정은 Spring Legacy 와 잘 맞는 Maven 으로 진행합니다.
Spring vs Boot 차이는 안다. pom.xml 은 들어본 정도.
pom.xml 한 줄이 무엇을 의미하는지 알고, Maven Update 함정을 피할 수 있다.