반응형

Maven - Repositories


(원문 위치 : http://www.tutorialspoint.com/maven/maven_repositories.htm)

What is a Maven Repository?

Maven 용어에서 repository(저장소)는 공간 즉 모든 프로젝트 jar, library jar, plugin 또는 구체적인 다른 프로젝트 인공물(artifact)가 저장되고 Maven에 의해 쉽게 사용되어질 수 있는 디렉토리이다.

Maven 저장소는 세가지 형태가 있다.
  • local

  • central

  • remote

Local Repository

Maven Local 저장소는 시스템에서 폴더위치이다. 이것은 처음으로 maven 명령을 실행할때 생성된다.

Maven local 저장소는 포조젝트의 모든 의존관계(library jar, plugin jar 등)을 유지한다.  Maven build를 실행할 때, Maven은 자동적으로 로컬 저장소에서 모든 의존 jar를 다운로드 한다. 이는 프로젝트가 build되는 매번 원격에 저장된 의존에 대한 참조를 피한다.

기본적으로 Maven local 저장소는 %USER_HOME%디렉토리에 Maven에 의해 생성된다. 기본 경로를 바꾸려면 %M2_HOME%\conf 디렉토리에서 가능한 Maven settings.xml에서 다른 경로로 바꾼다.
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
   http://maven.apache.org/xsd/settings-1.0.0.xsd">
      <localRepository>C:/MyLocalRepository</localRepository>
</settings>
Maven명령을 실행할 때 Maven은 custom 경로에서 의존관계를 다운로드 할 것이다.

Central Repository

Maven Central(중앙) 저장소는 Maven community에 의해 제공되는 저장소이다. 이것은 일반적으로 사용되는 다량의 library를 포함한다.


로컬 저장소에서 어떤 의존관계를 찾을수 없을 때, Maven은 URL: http://repo1.maven.org/maven2/ 을 사용하여 중앙 저장소에서 검색을 시작한다.


중앙저장소의 주요 개념

  • This repository is managed by Maven community. (이 저장소는 Maven comuunity에 의해 관리된다.)

  • It is not required to be configured.(설정이 필요없다.)

  • It requires internet access to be searched.(검색을 위해 인터넷 접근이 필요하다.)

중앙 maven 저장소의 컨텐츠를 검색하기 위해서 maven community는  http://search.maven.org/#browse를 제공한다. 이 library를 사용하여 개발자는 중앙저장소 내 가능한 모든 library를 검색할 수 있다.

Remote Repository

때때로 Maven은 중앙저장소에서 언급된 의존관계를 찾지 못하고 build 프로세를 멈추고 콘솔로 에러를 출력한다. 이런 상황을 방지하기 위해 Maven은 필요한 library나 다른 프로젝트 jar를 포함하는 개발자 자신의 custom 저장소인 'remote repository'의 개념을 제공한다


예를 들면, 아래의 POM.xml을 사용하여 Maven은 동일 pom.xml에서 언급된 원격 저장소로부터 (중앙 저장소에서 가능하지 않은) 의존관게를 다운로드 할 것이다.

<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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.projectgroup</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
   <dependencies>
      <dependency>
         <groupId>com.companyname.common-lib</groupId>
         <artifactId>common-lib</artifactId>
         <version>1.0.0</version>
      </dependency>
   <dependencies>
   <repositories>
      <repository>
         <id>companyname.lib1</id>
         <url>http://download.companyname.org/maven2/lib1</url>
      </repository>
      <repository>
         <id>companyname.lib2</id>
         <url>http://download.companyname.org/maven2/lib2</url>
      </repository>
   </repositories>
</project>

Maven Dependency Search Sequence

Maven build 명열을 실행할 때 Maven은 아래 순서로 의존관계 library를 찾는 것을 시작한다.

  • Step 1 - Search dependency in local repository, if not found, move to step 2 else if found then do the further processing. (로컬 저장소에서 의존관계를 검색, 만약 찾지 못하면 2단계로 가고 그래도 못 찾으면 그 다음단계로 진행한다.)

  • Step 2 - Search dependency in central repository, if not found and remote repository/repositories is/are mentioned then move to step 4 else if found, then it is downloaded to local repository for future reference. (중앙저장소에서 검색, 만약 찾지 못하고 원격 저장소가 언급되고 있다면 4단계로 가서 탖게되면 이후 참조를 위해 로컬 저장소에 다운로드 된다.)

  • Step 3 - If a remote repository has not been mentioned, Maven simply stops the processing and throws error (Unable to find dependency). (원격저장소가 언급되고 있지 않다면 Maven은 간단하게 처리를 먼추고 에러를 발생시킨다. - Unable to find dependency.)

  • Step 4 - Search dependency in remote repository or repositories, if found then it is downloaded to local repository for future reference otherwise Maven as expected stop processing and throws error (Unable to find dependency). (원격 저장소에서 의존관계를 검색, 찾므염 이후 참조를 위해 로컬로 다운하고 그렇지 않으면 멈추고 에러 발생.)


(** 열심히 발번역만 하면서 왔더니 정작 내가 이것을 제대로 이해를 못하고 지나가고 있는 느낌이 강하다. 그래서 몇일간은 몇개 안되지만 발번역 한 부분을 다시한번 공부하고 이후 또 진행할까 생각중이다... **)

반응형

+ Recent posts