Maven-リポジトリ

Mavenリポジトリとは何ですか?

Mavenの用語では、リポジトリは、すべてのプロジェクトjar、ライブラリjar、プラグイン、またはその他のプロジェクト固有のアーティファクトが格納され、Mavenで簡単に使用できるディレクトリです。

Mavenリポジトリには3つのタイプがあります。次の図は、これら3つのタイプに関するアイデアを示しています。

  • local
  • central
  • remote

ローカルリポジトリ

Mavenローカルリポジトリは、マシン上のフォルダの場所です。これは、mavenコマンドを初めて実行したときに作成されます。

Mavenローカルリポジトリは、プロジェクトのすべての依存関係(ライブラリjar、プラグインjarなど)を保持します。Mavenビルドを実行すると、Mavenはすべての依存関係jarをローカルリポジトリに自動的にダウンロードします。プロジェクトがビルドされるたびに、リモートマシンに保存されている依存関係への参照を回避するのに役立ちます。

Mavenローカルリポジトリは、デフォルトでMavenによって%USER_HOME%ディレクトリに作成されます。デフォルトの場所をオーバーライドするには、%M2_HOME%\ confディレクトリにあるMavensettings.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コミュニティによって提供されるリポジトリです。これには、一般的に使用されるライブラリが多数含まれています。

Mavenがローカルリポジトリで依存関係を見つけられない場合、次のURLを使用して中央リポジトリで検索を開始します- https://repo1.maven.org/maven2/

中央リポジトリの主な概念は次のとおりです-

  • このリポジトリはMavenコミュニティによって管理されています。
  • 構成する必要はありません。
  • 検索するにはインターネットアクセスが必要です。

中央のMavenリポジトリのコンテンツを閲覧するために、MavenコミュニティはURLを提供しています- https://search.maven.org/#browse。このライブラリを使用すると、開発者は中央リポジトリで利用可能なすべてのライブラリを検索できます。

リモートリポジトリ

Mavenは、中央リポジトリでも言及された依存関係を見つけられない場合があります。次に、ビルドプロセスを停止し、エラーメッセージをコンソールに出力します。このような状況を防ぐために、Mavenは次の概念を提供します。Remote Repository、これは、必要なライブラリまたは他のプロジェクト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は次の順序で依存関係ライブラリの検索を開始します-

  • Step 1 −ローカルリポジトリで依存関係を検索します。見つからない場合は、手順2に進みます。それ以外の場合は、さらに処理を実行します。

  • Step 2 −中央リポジトリで依存関係を検索します。見つからず、リモートリポジトリ/リポジトリが言及されている場合は、手順4に進みます。それ以外の場合は、後で参照できるようにローカルリポジトリにダウンロードされます。

  • Step 3 −リモートリポジトリが言及されていない場合、Mavenは単に処理を停止し、エラーをスローします(依存関係を見つけることができません)。

  • Step 4−リモートリポジトリまたはリポジトリで依存関係を検索します。見つかった場合は、後で参照できるようにローカルリポジトリにダウンロードされます。それ以外の場合、Mavenは処理を停止し、エラーをスローします(依存関係を見つけることができません)。