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 回答