各アーティファクトのルート(リポジトリルート[groupId] / [artifactId]への相対パス)で、Mavenはmaven-metadata.xmlファイルを見つけることを期待しています。このファイルを使用して、使用可能なバージョン、最新バージョン、およびリリースされたバージョンを判別します。
たとえば、repo1からのcommon-loggingのメタデータには、使用可能なすべてのバージョンが一覧表示され、2008年11月28日現在のリリースバージョンは1.1.1であることが示されています。
<?xml version="1.0" encoding="UTF-8"?><metadata>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
<versioning>
<release>1.1.1</release>
<versions>
<version>1.0</version>
<version>1.0.1</version>
<version>1.0.2</version>
<version>1.0.3</version>
<version>1.0.4</version>
<version>1.1</version>
<version>1.1.1</version>
</versions>
<lastUpdated>20071128191817</lastUpdated>
</versioning>
</metadata>
Mavenは、各リモートリポジトリのメタデータをローカルリポジトリ(maven-metadata- [repo name] .xmlという名前)にダウンロードするため、毎回各リポジトリにアクセスしなくても、使用可能なバージョンを確認できます。Mavenにメタデータの再フェッチを強制する場合は、コマンドラインの「-U」スイッチを使用して再フェッチできます。
独自のリポジトリがある場合は、この種のメタデータを公開して、Mavenが使用可能なバージョンのいずれかが適切かどうかを判断できるようにする必要があります。これを行う最も簡単な方法は、NexusやArtifactoryなどのリポジトリマネージャーを使用することです。これらは両方ともメタデータを管理します。