마지막으로 Repository를 알아보겠습니다.

A Maven repository is a collection of installed or deployed
project artifacts and other metadata information, managed exclusively by
Maven.

참조한 문서에 위와같이 설명하고 있습니다. 간략하게 "설치 또는 배포된 프로젝트와 메타데이터 정보들의 집합"이라고 할 수 있겠습니다.

프로젝트를 어디에 어떻게 설치하거나 배포하길래 Maven 저장소라고 할까? 물론 '어디'는 그 저장소라는 곳일 것이고, 실제 저장소는 로컬과 원격이 있는데, 로컬은 말 그대로 내 컴퓨터입니다. 원격은 Maven이 제공하는 원격 저장소 입니다. mvn archetype:create 와 mvn package를 실행했을 때 여러 Jar 파일들과 플러그인을 다운로드 하는 모습을 볼 수 있었는데, 그 파일들이 바로 로컬에 저장되는 것입니다. 그리고 로컬에 그런 파일들이 있어야 컴파일이 됩니다.

로컬에 저장되는 경로는 다음과 같습니다.(윈도우 사용시)
사용자 삽입 이미지
생성된 폴더안에 다운받은 jar파일과 pom파일이 보입니다. junit-4.4.pom 파일을 열어보겠습니다.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd ">
  <modelVersion>4.0.0</modelVersion>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.4</version>
  <name>JUnit</name>
  <url>http://junit.org</url>
...

이와 같은 모습을 하고 있습니다. 즉, 폴더 구조가 pom.xml파일에 명시된 프로젝트 좌표를 바탕으로 생성된 것을 확인할 수 있습니다.

사용자 삽입 이미지Maven은 프로젝트가 필요로 하는 프로젝트(Jar, War, Ear 등)를 Maven 로컬 저장소에서 찾아서 참조합니다.니다. 로컬 저장소에 없으면, 원격 저장소에서 해당 프로젝트가 있는지 확인하여 로컬 저장소로 복사합니다. 이 때 폴더구조는 pom.xml파일을 바탕으로 생성해 주는 것입니다.

그리고 멋진 것은 필요로 하는 프로젝트가 필요로 하는 프로젝트까지.. 즉 추이 종속성까지 확인하여 싹 가져오게 됩니다. 추이 종속성에 대한 정보도 이미 1차적으로 참조하길 원했던 프로젝트의 pom 파일에 dependency 엘리먼트로 등록되어 있기 때문에, 그 정보를 바탕으로 가져올 것입니다.

그럼 끝으로 프로젝트를 Maven Space에 설치하는 방법을 살펴보겠습니다.

mvn install

install Phase를 사용하여 설치하면, 다음과 같이 로컬 저장소에 폴더가 생기고 그 안에 jar 파일과 pom 파일이 생성된 것을 확인할 수 있습니다. 이제 이 프로젝트를 다른 프로젝트에서 참조할 수 있게 됩니다.

사용자 삽입 이미지
2007/11/19 - [Maven] - Maven 용어 2
2007/11/16 - [Maven] - Maven 용어 1