English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Maven 저장소

Maven 용어에서, 저장소는 위치(place)입니다.

Maven 저장소는 프로젝트에 의존하는 제3자 라이브러리이며, 이 라이브러리가 위치하는 곳을 저장소라고 합니다.

Maven에서는, 어떤 의존성, 플러그인, 프로젝트 빌드의 출력이든, 구성 요소라고 부릅니다.

Maven 저장소는 구성 요소(주로 JAR)를 관리하는 데 도움을 줍니다. 이는 모든 JAR 파일(WAR, ZIP, POM 등)이 위치하는 곳입니다.

Maven 저장소는 세 가지 유형이 있습니다:

  • 로컬(local)

  • 중앙(central)

  • 원격(remote)

로컬 저장소

Maven 로컬 저장소는 Maven 설치 후에는 생성되지 않으며, maven 명령어를 처음 실행할 때 생성됩니다.

Maven을 실행할 때, Maven이 필요한 모든 구성 요소는 직접 로컬 저장소에서 가져옵니다. 로컬 저장소에 없다면, 먼저 원격 저장소에서 구성 요소를 로컬 저장소에 다운로드한 후, 로컬 저장소의 구성 요소를 사용합니다.

기본적으로, Linux와 Windows 모두, 각 사용자의 사용자 디렉토리에 .m 경로 이름이 있는 경로가 있습니다.2/respository/ 의 저장소 디렉토리.

Maven 로컬 저장소는 기본적으로 %USER_HOME% 디렉토리에 생성됩니다. 기본 위치를 변경하려면 %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은 지정한 경로에 필요한 파일을 다운로드합니다.

중앙 저장소

Maven 중앙 저장소는 Maven 커뮤니티가 제공하는 저장소로, 많은 일반적인 라이브러리가 포함되어 있습니다.

센터 저장소는 대부분의 인기 있는 오픈 소스 Java 구성 요소, 소스 코드, 저자 정보, SCM, 정보, 라이선스 정보 등을 포함하고 있습니다. 일반적으로 간단한 Java 프로젝트가 필요로 하는 구성 요소는 대부분 이곳에서 다운로드할 수 있습니다.

센터 저장소의 주요 개념:

  • 이 저장소는 Maven 커뮤니티가 관리합니다.

  • 구성할 필요가 없습니다.

  • 네트워크를 통해 접근할 수 있습니다.

센터 저장소의 내용을 탐색하려면 Maven 커뮤니티가 제공하는 URL을 사용합니다:http://search.maven.org/#browse이 저장소를 사용하면 모든 사용할 수 있는 코드 라이브러리를 검색할 수 있습니다.

원격 저장소

Maven이 센터 저장소에서 의존 라이브러리 파일을 찾지 못하면, 빌드 과정을 중단하고 컨솔에 오류 메시지를 출력합니다. 이러한 상황을 피하기 위해 Maven은 원격 저장소 개념을 제공합니다. 이는 개발자가 맞춤형 저장소를 정의하고 필요한 코드 라이브러리나 다른 프로젝트에서 사용하는 jar 파일을 포함합니다.

예를 들어, 아래의 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 의존 검색 순서

Maven 빌드 명령어를 실행할 때, Maven는 다음 순서로 의존 라이브러리를 찾기 시작합니다:

  • 단계 1 로컬 저장소에서 검색합니다. 찾지 못하면, 다음 단계를 수행합니다. 2데이터를 찾으면 다른 작업을 수행합니다.

  • 단계 2 - 중앙 저장소에서 검색합니다. 찾지 못하면 설정된 하나나 여러 개의 원격 저장소에서 검색합니다. 4,찾으면 로컬 저장소에 다운로드하여 미래의 참조를 위해 저장합니다.

  • 단계 3 - 원격 저장소가 설정되지 않았다면, Maven이 처리를 중단하고 오류를 발생시킵니다(의존 파일을 찾을 수 없음).

  • 단계 4 - 하나나 여러 개의 원격 저장소에서 의존 파일을 검색합니다. 찾으면 로컬 저장소에 다운로드하여 미래의 참조를 위해 저장합니다. 찾지 못하면 Maven이 처리를 중단하고 오류를 발생시킵니다(의존 파일을 찾을 수 없음).

Maven 알리云(Aliyun) 저장소

Maven 저장소는 기본적으로 해외에 있습니다. 국내에서 사용할 때는 느릴 수 있습니다. 따라서 알리云 저장소로 변경할 수 있습니다.

Maven 루트 디렉토리 아래의 conf 폴더에 있는 settings.xml 파일을 수정하세요. mirrors 절에 다음 내용을 추가하세요:

<mirrors>
    <mirror>
      <id>alimaven/id>
      <name>aliyun maven/name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central/mirrorOf>        
    </mirror>
</mirrors>

第二步: pom.xml 파일에 추가하세요:

<repositories>  
        <repository>  
            <id>alimaven/id>  
            <name>aliyun maven/name>  
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
            <releases>  
                <enabled>true</enabled>  
            </releases>  
            <snapshots>  
                <enabled>false</enabled>  
            </snapshots>  
        </repository>  
</repositories>