# 목적
- 프로젝트 생성, 컴파일, 테스트, 패키징, 배포 등의 작업을 위한 전용 프로그램
💡 Maven
- 자바용 프로젝트 관리 도구
- 프로젝트의 전체 라이프 사이클을 관리하는 도구
- 프로젝트의 생성, 컴파일, 빌드, 패키징, 배포 등의 작업을 수행할 수 있다.
- 프로젝트 구조 및 빌드 단계를 표준화할 수 있고, 종속성(의존하는 라이브러리) 관리를 효율적으로 처리할 수 있다.
Maven의 특징
- Project Object Model(POM)
- 프로젝트의 구조, 라이브러리 의존성, 빌드 설정 등을 정의하는 XML 파일
- pom.xml은 프로젝트의 메타정보를 포함하고 있으며, maven은 이 정보를 바탕으로 프로젝트를 빌드하고 종속성을 관리한다.
- 의존성 관리
- 프로젝트가 필요로 하는 외부 라이브러리 및 종속성을 관리
- pom.xml 파일에서 종속성을 선언하면 maven이 해당 종속성을 자동으로 다운로드하고 프로젝트에 포함시킨다.
- 다양한 플러그인
- 컴파일, 테스트, 패키징, 배포 등을 지원하는 다양한 플러그인을 제공
- 사용자는 필요한 작업을 수행하기 위해서 플러그인을 등록할 수 있다.
- 중앙저장소 제공
- 중앙저장소를 통해 라이브러리와 플러그인을 제공한다.
- 사용자가 필요로 하는 라이브러리와 플러그인을 다운로드할 수 있고, 자신이 제작한 라이브러리나 플러그인을 배포할 수 있다.
- 빌드 라이프 사이클 제공
- 미리 정의된 빌드 라이프 사이클을 제공한다.
- maven은 clean, compile, test, package, install, deploy 등의 단계로 구성된 일련의 빌드단계가 있다.
* ant는 이런 빌드단계를 일일이 설정해줘야 한다.
* maven은 설정을 하는 게 아니라 미리 정해져 있는 관례를 따른다.
❓ IDE로 하면 되지, 왜 굳이 Maven 사용?
- 리눅스 서버PC에서는 IDE로 실행하지 않기 때문에
Ant, Maven 등의 빌드 도구를 통해서 컴파일하고 실행한다.
https://mvnrepository.com/search?q=spring-context