我的 mvn build 正在尝试从在线存储库中获取以下文件。
http://BAD_WEBSITE/repositories/smpsnapshots/org/jboss/aop/jboss-aop/
2.0.0-SNAPSHOT/maven-metadata.xml
但是,该 URL 不再存在。
我已将 maven-metadata.xml 文件保存在本地,但是如何修改我的 POM 文件以在本地获取该文件?
这是我的配置文件指定这个错误的 URL 来查找文件的地方。
快照.pom
<distributionManagement> <!-- Declare the release repository to deploy the
.zip file to -->
<repository>
<id>smpreleases</id>
<name>Releases</name>
<url>http://BAD_WEBSITE/content/repositories/smpreleases</url>
</repository>
<!-- Declare the snapshot repository to deploy the .zip file to -->
<snapshotRepository>
<id>smpsnapshots</id>
<name>Snapshots</name>
<url>http://BAD_WEBSITE/content/repositories/smpsnapshots</url>
</snapshotRepository>
</distributionManagement>
答案1
任何快速修复都只是暂时的;您将一次又一次地遇到同样的问题,并且很难手动管理这种情况。这个问题(以及相关问题:缺少依赖项、服务器宕机、工作断开)的最简单和最可靠的解决方案都可以通过简单地安装您自己的本地 maven 存储库来轻松解决。(这真的很简单:关系在我看来是最简单的。
一旦完成(就像简单解压缩&启动服务器),然后将所有 maven 项目指向此本地服务器。(它可以位于 localhost 或网络上的另一台服务器上。)假设目前是 nexus,配置为镜像您使用的所有远程存储库。它将为您缓存这些工件,从而加快新项目和/或新服务器上的新构建。现在您也可以推送(部署)到此服务器,以便与其他 maven 项目共享您的工件。在部署到公共存储库(如果您这样做)之前,可以在此处暂存和测试(例如,jenkins/hudson)。
只要记住:
- 任何非快照工件都只有一个校验和(sha1/md5),并且应始终具有全局唯一性 - 因此无论它们来自本地镜像还是真实远程都无关紧要。(不要多次生成相同的发布工件。)
- 不要将存储库信息放在你的 pom 中;将所有内容放入
settings.xml
:~/.m2/settings.xml
或者使用以下方式运行 mavenmvn -s path/to/my/settings.xml