 |
|
저장소와 이름
메이븐 2 저장소는 프로젝트 종속성 분석을 할 때 메이븐에 의해 사용되는 artifact 모음을 담고 있다. 로컬 저장소는 로컬 디스크에 접근하며 원격 저장소는 네트워크를 통해 접근한다.
artifact는 보통 바이너리 라이브러리를 포함하고 있거나 실행 가능한 JAR 파일 형태로 묶여 있다. 이것은 artifact의 type이다. 하지만 실제로 artifact는 WAR, EAR 또는 다른 코드 묶음 타입이 될 수도 있다.
메이븐 2는 저장소에 저장되어 있는 artifact들 모음에 대한 빠른 인덱싱을 위해 운영체제의 디렉터리 구조를 이용한다. 이러한 저장소 인덱스 시스템은 coordinate를 통해 어떤 artifact든 고유하게 식별하는 기능에 의존한다.
메이븐 코디네이트
메이븐 코디네이트는 artifact를 식별하기 위한 유일한 값들의 터플이다. 코디네이트는 세 가지 정보로 구성된다.
-
group ID: artifact 제작을 책임지는 개체 또는 조직. 예를 들어
com.ibm.devworks는 group ID가 될 수 있다.
-
artifact ID: 실제 artifact의 이름. 예를 들어
OpsImp라는 메인 클래스를 가진 프로젝트는 artifact ID로 OpsImp를 사용할 수 있다.
-
version: artifact 버전. 지원되는 형식은
mmm.nnn.bbb-qqqqqqq-dd
와 같다. 여기에서
mmm
은 메이저 버전 숫자,
nnn
은 마이너 버전 숫자,
bbb
는 버그 수정 레벨을 나타낸다. 가끔
qqqqq
(수식어) 또는
dd
(빌드 숫자)를 버전 넘버에 추가로 붙일 수 있다.
메이븐 코디네이트는 메이븐 설정과 POM 파일에서 두루 사용한다. 예를 들어 OpsImp 라는 모듈에 1.0-SNAPSHOT 레벨로 종속성을 가지는 프로젝트를 pom.xml 파일에 서술하는 내용이 아래 있는 Listing 1에 나와있다.
Listing 1. 예제 OpsImp 모듈을 위한 메이븐 코디네이트
<dependencies>
<dependency>
<groupId>com.ibm.devworks</groupId>
<artifactId>OpsImp</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
|
특별한 키워드인 SNAPSHOT을 사용하여 해당 프로젝트 또는 모듈이 개발중이기 때문에 최신 버전의 artifact가 가능하다면 그것을 가져와야 한다는 것을 메이븐 2에 알려준다.
프로젝트가 단위 테스트를 위해 JUnit에 의존한다는 것을 지정하기 위해 Listing 2처럼 JUnit 3.8.1의 코디네이트가 프로젝트의 pom.xml에 추가될 수 있다.
Listing 2. JUnit 종속성을 위한 메이븐 코디네이트
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
</dependency>
</dependencies>
|
메이븐 저장소 살펴보기
메이븐 저장소는 보통 디렉터리 트리 구조이기 때문에 디스크에 artifact들이 어떻게 저장되어 있는지 쉽게 볼 수 있다. 그림 3은 JUnit 3.8.1 artifact의 위치를 보여주는 로컬 저장소 일부를 보여준다.
그림 3. 메이븐 2 저장소 안
그림 3에서 메이븐이 저장소 안의 POM 및 artifact에 대한 체크섬 해시와 함께 artifact의 POM 파일들을 관리함을 볼 수 있다. 이 파일들은 artifact들이 저장소들 간에 옮겨질 때 무결성 체크를 위해 사용한다. 이 artifact는 메이븐의 종속성 관리 엔진에 의해 중앙 저장소에서 로컬 저장소로 다운로드됐다.
그림 4는 로컬 저장소에 있는 com.ibm.devworks/OpsImp/1.0-SNAPSHOT을 보여준다. artifact는 POM 파일과 같은 디렉터리에 위치한다. 이 경우 artifact가 로컬에 설치된다.
그림 4. 로컬 저장소의 OpsImp artifact
|