4

Maven2を使用していますが、リポジトリにプラグインが見つからないようです。次のようなエラーが発生します

リポジトリメタデータ:'org.apache.maven.plugins'がリポジトリに見つかりませんでした:myrepo

ここで、myrepoは私のリポジトリの名前です。

私の質問は、Mavenがプラグインの場所をどのように知っているかということです。エラーにはメタデータへの参照がありますが、どのメタデータがどこでどのような形式をとる必要がありますか?私はこれまでドキュメントを探すのにあまり運がありませんでした...

(中央リポジトリを使用する簡単な答えには興味がありません。myrepoが機能しない理由を知りたいです。)

ありがとう!

4

1 に答える 1

7

各アーティファクトのルート(リポジトリルート[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が使用可能なバージョンのいずれかが適切かどうかを判断できるようにする必要があります。これを行う最も簡単な方法は、NexusArtifactoryなどのリポジトリマネージャーを使用することです。これらは両方ともメタデータを管理します。

于 2009-07-21T09:41:03.773 に答える