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

Maven 仓库

Mavenの用語では、リポジトリは場所(place)と呼ばれます。

Mavenリポジトリはプロジェクトの依存関係のサードパーティライブラリであり、そのライブラリの場所をリポジトリと呼びます。

Mavenでは、依存関係、プラグイン、プロジェクトのビルド出力のいずれもコンポーネントと呼ばれます。

Mavenリポジトリはコンポーネント(主にJAR)の管理を助け、すべてのJARファイル(WAR、ZIP、POMなど)を配置する場所です。

Mavenリポジトリには3つの種類があります:

  • ローカル(local)

  • 中央(central)

  • リモート(remote)

ローカルリポジトリ

MavenのローカルリポジトリはMavenのインストール後に自動的に作成されず、初めてmavenコマンドを実行したときに作成されます。

Mavenを実行するとき、Mavenが必要とするすべてのコンポーネントは直接ローカルリポジトリから取得されます。ローカルリポジトリにない場合、まずリモートリポジトリからコンポーネントをダウンロードしてローカルリポジトリに保存し、その後ローカルリポジトリのコンポーネントを使用します。

デフォルトでは、LinuxでもWindowsでも、各ユーザーのユーザーディレクトリに.m2/respository/ のリポジトリディレクトリ。

Mavenのローカルリポジトリはデフォルトで%HOMEPATH%ディレクトリに作成されます。デフォルトの場所を変更するには、%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 - 中央リポジトリで検索し、見つからない場合、1つまたは複数のリモートリポジトリが設定されている場合、上記の手順を実行します。 4、見つかった場合、それをローカルリポジトリにダウンロードして将来の参照のために保持します。

  • 手順 3 - リモートリポジトリが設定されていない場合、Mavenは単に処理を停止し、エラーメッセージを返します(依存関係のファイルが見つかりません)。

  • 手順 4 - 依存関係のファイルを1つまたは複数のリモートリポジトリで検索し、見つかった場合、それをローカルリポジトリにダウンロードして将来の参照のために保持します。見つからない場合、Mavenは処理を停止し、エラーメッセージを返します(依存関係のファイルが見つかりません)。

Maven アリyun(阿里云)リポジトリ

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>

第2段: 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>