Maven
- 자바 프로젝트를 자동으로 관리해주는 도구
- 프로젝트를 진행하면서 필연적으로 발생하는 다양한 작업들을 편리하게 관리할 수 있는 빌드 자동화 도구
ex: 라이브러리 관리 (JSTL 다운받고 등록하고..), 라이브러리 버전 관리 (다른 버전으로 다시 다운 받고.. 다시 등록하고..), 프로젝트 버전 관리 (프로젝트 업데이트하면 버전 이름 바꿔주고.. 관리하고..), 프로젝트 배포 관리 (프로젝트의 배포판 생성하기)
- 프로젝트 내부의 pom.xml을 통해 전체 프로젝트를 관리할 수 있는 프로그램이다.
POM (Project Object Model)
- 프로젝트 객체 모델
- 해당 프로젝트에 대한 여러가지 설정 및 의존성등의 정보들을 담고 있다.
pom.xml
- <groupId> : 이 프로젝트의 그룹 아이디 (패키지 이름에 사용했던 회사 이름)
- <artifactId> : 이 프로젝트의 프로젝트명 (패키지에서 쓸 이름)
- <name> : 이 프로젝트의 이름 (대소문자 버전)
- <packaging> : 이 프로젝트의 빌드 결과가 무엇일지 설정
- <version> : 이 프로젝트의 현재 버전
- <properties> : pom.xml 내부에서 사용할 변수 등록
- <dependencies> : 이 프로젝트를 구성하는 데에 필요한 다른 프로젝트들 (이 프로젝트가 의존하는 다른 프로젝트들)
여기에 등록한 프로젝트들은 메이블이 자동으로 다운로드하여 관리해준다.
우리 프로젝트 빌드(buildPath)에도 자동으로 포함시킨다.
- <dependency> : 의존하는 프로젝트의 pom 정보를 적어 등록하는 곳.
해당 프로젝트의 <groupId>, <artifactId>, <version>등을 적어 우리 프로젝트에 포함시킨다.
<scope>를 설정하여 우리 프로젝트에서 어느정도 범위까지 필요한지 설정할 수 있다.
<scope>의 종류
- compile : 프로젝트를 컴파일 할 때 필요한 의존성
컴파일 당시에도 사용되고, 프로젝트 배포시에도 포함된다. (기본값)
- runtime : 컴파일 할 때는 필요없지만 해당 프로젝트를 실행할 때는 필요한 의존성
프로젝트 배포시에 포함된다.
- provided : 컴파일 할 때는 필요하지만 실행할 때는 필요없는 의존성 (JSP 등)
프로젝트 배포시에는 포함되지 않는다.
- test : 테스트 단계에서만 필요한 의존성, 컴파일 및 배포에 모두 포함되지 않는다.
Maven의 원격 레포지토리와 로컬 레포지토리
- Maven은 <dependencies>에 등록한 모든 프로젝트들을 중앙 원격 레포지토리에서 다운받는다.
- 다운받은 프로젝트들은 user/.m2/repository/gruoupId/artifactId/... 폴더에 버전별로 보관된다. (로컬 레포지토리)
'Spring' 카테고리의 다른 글
[Spring] Lombok (0) | 2023.07.04 |
---|---|
[Spring] Log4j (0) | 2023.07.04 |
[Spring] JUnit (0) | 2023.07.04 |
[Spring] 의존성 주입 (0) | 2023.07.03 |
[Spring] 스프링 프레임워크란? (0) | 2023.07.03 |