ㅇMaven: Java 프로젝트의 라이프사이클 관리를 위한 빌드 도구
빌드, 의존성 관리, 그리고 프로젝트 관리를 자동화하는 도구이다. Apache Software Foundation에서 개발한 오픈 소스 프로젝트로, 프로젝트를 효율적으로 관리하고 빌드할 수 있도록 다양한 기능을 제공한다. 특히, 의존성 관리를 통해 프로젝트에 필요한 외부 라이브러리를 쉽게 가져오고 업데이트할 수가 있다.
※ 의존성이란?
프로젝트에서 말하는 의존성은 소프트웨어가 정상적으로 작동하기 위해 필요한 외부 코드나 라이브러리를 의미한다. 예를 들어, 애플리케이션에서 데이터베이스에 접근하거나 HTTP 요청을 보내는 기능을 구현할 때, 개발자가 직접 모든 코드를 작성하지 않고 이미 만들어진 라이브러리를 사용하는 경우가 많다. 이때, 프로젝트는 그 라이브러리에 의존하게 되며, 해당 라이브러리를 '의존성'이라고 부른다.
의존성 관리 도구(예: Gradle, Maven)를 사용하면 이러한 의존성들을 자동으로 다운로드하고 관리할 수 있어, 프로젝트 빌드 과정이 효율
적이고 체계적으로 이루어진다. 의존성 주입(DI)의 의존성과는 의미가 다르다!
[Maven 주요 개념]
1. 프로젝트 객체 모델(POM): 프로젝트에 대한 정보를 담고 있는 XML 파일(pom.xml)
Maven은 POM 파일을 중심으로 작동한다. POM은 프로젝트에 대한 정보를 담고 있는 XML 파일로 프로젝트의 의존성, 플러그인, 빌드 설정 등이 이곳에 정의된다. POM 파일은 Maven이 프로젝트를 빌드하거나 필요한 라이브러리를 가져오는 데 필요한 모든 정보를 제공한다.
2. 의존성 관리
Maven은 의존성 관리를 매우 효율적으로 처리한다. 개발자는 프로젝트에 필요한 라이브러리를 직접 다운로드하고 관리하는 대신, POM 파일에 필요한 의존성을 정의하기만 하면 된다. Maven은 중앙 저장소(Maven Central Repository)에서 해당 라이브러리를 자동으로 다운로드하여 프로젝트에 포함시킨다. 이를 통해 중복되는 라이브러리 관리를 줄이고, 일관성 있는 버전을 유지할 수 있다.
3. 라이프사이클과 플러그인
Maven의 핵심은 빌드 라이프사이클이다. 이는 프로젝트의 빌드 과정에서 수행되는 단계들을 정의한 것으로, "컴파일", "테스트", "패키징", "배포"와 같은 단계로 나뉜다. 각 단계는 Maven 플러그인을 통해 구체적인 작업을 수행하며, 예를 들어 'maven-compiler-plugin'은 소스 코드를 컴파일하는 역할을 한다.
[Maven의 장점]
- 자동화된 빌드: Maven은 프로젝트의 빌드 과정을 자동화하여 일관된 빌드 환경을 제공한다.
- 효율적인 의존성 관리: 외부 라이브러리 및 모듈을 자동으로 다운로드하고 관리한다.
- 프로젝트 구조 표준화: Maven은 프로젝트의 디렉터리 구조와 빌드 프로세스를 표준화하여 유지보수성을 높인다.
- 멀티 모듈 프로젝트 지원: 여러 모듈로 구성된 대규모 프로젝트를 관리하는 데에 적합하다.
[Maven vs Gradle]
https://claremont.tistory.com/entry/Gradle%EC%9D%B4%EB%9E%80
https://claremont.tistory.com/entry/Maven-vs-Gradle
출처 및 참고: https://maven.apache.org/
'프레임워크 > Spring' 카테고리의 다른 글
[Spring] Maven vs Gradle (4) | 2024.10.06 |
---|---|
[Spring] Gradle이란? (4) | 2024.10.06 |