Maven2如何知道在哪里可以找到插件? [英] How does Maven2 know where to find plugins?

查看:419
本文介绍了Maven2如何知道在哪里可以找到插件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Maven2,但似乎在我的存储库中找不到任何插件.我遇到类似的错误

I'm using Maven2 and I can't seem to find any plugins in my repository. I'm getting errors like

用于以下方面的存储库元数据: 'org.apache.maven.plugins'无法 可以在存储库:myrepo

repository metadata for: 'org.apache.maven.plugins' could not be found on repository: myrepo

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

where myrepo is the name of my repository.

我的问题是Maven如何知道在哪里可以找到插件?我的错误引用了元数据,应该在什么地方使用什么元数据以及必须采用什么格式?到目前为止我没有运气来寻找文档...

My question is how does Maven know where to find plugins? There's a reference in my error to metadata, what metadata is expected where and what format must it take? I've not had much luck so far looking for documentation...

(我对使用中央存储库的简单答案不感兴趣,我想知道为什么myrepo无法正常工作.)

(I'm not interested in the easy answer to use the central repo, I want to know why myrepo isn't working.)

谢谢!

推荐答案

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

In the root of each artifact (relative path to repository root [groupId]/[artifactId]), Maven expects to find a maven-metadata.xml file. It uses this file to determine the available versions, the latest version, and the released version.

例如,来自repo1的常见记录的元数据列出了所有可用版本,并告诉我们截至2008年11月28日的发行版本是1.1.1.

For example common-logging's metadata from repo1 lists all the available versions and tells us the release version is 1.1.1 as of 28th Nov 2008.

<?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 will download the metadata for each remote repository to your local repository (with the name maven-metadata-[repo name].xml) so it can check the available versions without having to hit each repository each time. If you want to force Maven to refetch the metadata you can do so with the "-U" switch on the commandline.

如果您有自己的存储库,则需要发布这种元数据,以便Maven可以确定是否有可用的版本是正确的版本.最简单的方法是使用存储库管理器,例如 Nexus

If you have your own repository, it needs to publish this kind of metadata so Maven can determine if any of the versions are available is the right one. The simplest way to do this is to use a repository manager like Nexus or Artifactory which will both manage the metadata for you.

这篇关于Maven2如何知道在哪里可以找到插件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆