Maven2如何知道在哪里找到插件?

时间:2009-07-21 09:22:48

标签: plugins repository maven-2 maven-metadata

我正在使用Maven2,我似乎无法在我的存储库中找到任何插件。我收到了像

这样的错误
  

存储库元数据:   'org.apache.maven.plugins'不能   在存储库中找到:myrepo

其中myrepo是我的存储库的名称。

我的问题是Maven如何知道在哪里找到插件?我的错误中有一个对元数据的引用,预期元数据在哪里以及必须采用什么格式?到目前为止,我没有太多运气寻找文件......

(我对使用中央回购的简单答案不感兴趣,我想知道为什么myrepo无效。)

谢谢!

1 个答案:

答案 0 :(得分:6)

在每个工件的根目录(存储库根目录[groupId] / [artifactId]的相对路径)中,Maven希望找到一个maven-metadata.xml文件。它使用此文件来确定可用版本,最新版本和已发布版本。

例如,common-logging's metadata from repo1列出了所有可用版本,并告诉我们截至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这样的存储库管理器,它将为您管理元数据。