我正在使用Maven2,我似乎无法在我的存储库中找到任何插件。我收到了像
这样的错误存储库元数据: 'org.apache.maven.plugins'不能 在存储库中找到:myrepo
其中myrepo是我的存储库的名称。
我的问题是Maven如何知道在哪里找到插件?我的错误中有一个对元数据的引用,预期元数据在哪里以及必须采用什么格式?到目前为止,我没有太多运气寻找文件......
(我对使用中央回购的简单答案不感兴趣,我想知道为什么myrepo无效。)
谢谢!
答案 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可以确定是否有任何版本可用。最简单的方法是使用像Nexus或Artifactory这样的存储库管理器,它将为您管理元数据。