1.Maven
Maven은 프로젝트를 관리하는 도구이다.
빌드 자동화 기능과 프로젝트 관리 기능을 제공한다.
- 프로젝트(라이브러리) 관리는 pom.xml 파일을 이용하여 프로젝트와 관련된 jar 파일을 다운로드하고 관리한다.
- 빌드 자동화는 빌드 작업들을 간단하고 쉽게 그리고 일관성 있게 수행할 수 있는 통합 환경을 제공한다.
이때 빌드는 소스코드 파일을 실행 코드로 변환하여 배포하는 과정을 말한다.
2. 프로젝트 관리 기능
프로젝트 관리 설정들을 메이븐이 미리 정의한 설정들로 대체한다.
- 정형화된 프로젝트 디렉토리 구조 관리(pom.xml)
CoC(Convention over COnfiguration)패러다임을 따른다. - 설정보다는 규범 - 의존성 관리기능
편리한 라이브러리 관리 기능이다.(pom.xml, Repository)
프로젝트 빌드에 필요한 라이브러리, 플러그인을 개발자 PC에 자동으로 다운로드한다 - 빌드 프로세스를 관리(pom.xml)
플러그인 설정을 통해 빌드를 자동화한다.
프로젝트 디렉토리 기본 설정은 다음과 같다.
pom.xml 코드 구성
프로젝트 당 한 개의 pom.xml 파일을 관리한다.pom.xml코드는 다음과 같이 구성되어 있다.
- 최상위 엘리먼트(root element) : project
- pom.xml은 3개의 필수 필드를 가진다.
- groupId : 프로젝트 조직 고유 도메인
- artifactId : 프로젝트명
- version : 프로젝트 버전
- 프로젝트 의존관계의 라이브러리 관리는 dependency필드에 존재한다.
프로젝트 빌드 설정
- 프로젝트 기본 정보, 저장소, 프로퍼티, 디렉토리 구조
- 플러그인(plugins)
- 골(goals)
Maven Repository
메이븐 저장소는 프로젝트에 사용되는 프로젝트 jar 파일, 라이브러리 jar 파일들이 위치하며 3가지 타입이 있다.
메이븐의 의존 라이브러리 검색 동작 절차대로 타입을 나열했다.
- 지역(local) 저장소
로컬 저장소는 메이븐을 빌드할 때 다운로드하는 라이브러리, 플러그인을 관리하는 저장소이다. - 중앙(central) 저장소
오픈 소스 라이브러리, 메이븐 플러그인, 메이븐 아키타입을 관리하는 저장소이다. - 원격(remote) 저장소
중앙 저장소에존재하지 않는 라이브러리를 관리하기 위하여 별도의 메이븐 저장소를 설치해 관리하는 것이 가능하다.
의존 라이브러리 적용 스코프
의존 라이브러리를 적용할 수 있는 시점을 제한할 수 있다.
scope | Description | |
compile | 스코프를 설정하지 않았을 떄의 기본 스코프 | |
provided | 컴파일시에는 직접 의존성을 참조하고 런타임시에는 다른 환경에서 의존성을 제공받는다.(해당 컨네이너의 서블릿 API) | |
runtime | 컴파일 시에는 사용되지 않지만 애플리케이션을 실행할 떄 사용되는 라이브러리일 경우 설정한다. | |
test | 테스트하는 시점에만 사용하는 라이브러리에 대한 스코프를 설정할 때 사용한다.(JUnit) | |
system | provided와 비슷하다. 단지 우리가 직접 jar 파일을 제공해야 한다. | |
import | import : 다른 POM 설정 파일에 정의 되어 있는 의존 관계 설정을 현재 프로젝트로 가져온다. |
4.빌드 자동화 기능
메이븐은 소프트웨어 빌드를 위한 공통 인터페이스를 제공하는 프레임워크이다.
플러그인 설정을 통해 기능을 위임한다.
- 빌드 단계(컴파일, 테스트, 패키징, 배포)들을 빌드 라이프 사이클이라고 한다.
- 각 빌드 단계에서 수행되는 작업을 골(Goal)이라 한다.
- 실제 골은 그 단계에 연결된 플러그인(Plugin)에 의해 실행된다.
Maven 빌드 라이프사이클
Maven은 기본, clean, site 3개의 라이프사이클이 있다.
- 기본라이프사이클
여러 단계의 페이즈(phase)로 나뉘어져 있으며, 각 페이즈는 의존관계를 가진다. compile -> test -> package deploy순서로 진행된다. - clean 라이프사이클
clean 페이즈를 이용하여 이전 빌드에서 생성된 모든 파일(target 디렉토리)들을 삭제한다. - site 라이프사이클
site, site-deploy 페이즈를 이요하여 생성된 문서들을 대상 사이트에 배포한다.
Maven Phase & Goal
빌드 라이프사이클은 하나 이상의 골을 수행하는 페이즈(phase)들로 구성한다.
각 페이즈 별로 플러그인이 작업을 수행한다. 이 작업을 Goal이라 한다.
'Spring' 카테고리의 다른 글
Spring_Chapter06_스프링+MyBatis (0) | 2022.04.29 |
---|---|
Spring프레임워크_Chapter05_스프링 MVC (0) | 2022.04.08 |
Spring_chapter04_스프링 JDBC (0) | 2022.03.28 |
Spring프레임워크_chapter03_Dependency Injection (0) | 2022.03.17 |
Spring 프레임워크_Chapter01_프레임워크 기초 (0) | 2022.03.11 |