Maven 存储库继承和覆盖

标签 maven repository pom.xml

我有一个几年前构建的 Maven 项目,现在我需要进行一些更新。我的项目的依赖项之一在其 POM 中列出了一个不再存在的 Maven 存储库。我现在遇到构建失败。

我原以为我的 POM 或 Settings.xml 中的存储库列表会胜过依赖项的 POM 中列出的任何存储库;或者 Maven 会在无法连接到已灭绝的存储库后尝试我的存储库。相反,它只是因构建失败而崩溃。

此外,我的本地存储库中已经有了所需的依赖项。我还以为 Maven 会使用它。

有没有办法覆盖继承的存储库列表,或者告诉 Maven 在 repo 问题的情况下继续?

最佳答案

如果您依赖的 Artifact 是快照版本,那么 maven 将在每次构建时检查新快照,这就是为什么将依赖项锁定到已发布版本是一个好习惯的原因。

您可以通过定义 <mirror> 来“覆盖”存储库声明。在 settings.xml 中。

http://maven.apache.org/settings.html#Mirrors

我通常设置一个本地托管的存储库管理器(最好是 nexus ),然后定义 mirrorOf(*) = local-repo-manager/url。
Nexus 允许使用预定义的搜索顺序对多个 repo 进行分组。
Nexus 存储库可以在本地托管或缓存/代理到公共(public)存储库。
我通常在小组的前面有一个本地托管的 3rd 方 repo,我可以在其中存储未在公共(public) repo 上发布的 Artifact 。

关于Maven 存储库继承和覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6349841/

相关文章:

java - 在 javaee-api maven-project 中放置静态文件的位置

java - Maven 不使用 pom 中的 Surefire 插件构建项目

gradle - Gradle 中的 JCenter 存储库包含哪些内容?

java - YaHP Converter 抛出 javax.xml.datatype.DatatypeConfigurationException

java - 如何使用 Maven 调用程序以编程方式设置 Artifact ID 和其他信息

java - 无法关闭在 Spring Tool Suite 中创建的基于 java 的 Web 服务

java - 类路径包含多个 SLF4J 绑定(bind)

java - 使用手动下载的依赖项时出现 POM 错误

ios - 如何使用 Xcode 7 将项目添加到 subversion 并更改用户凭据

git - 强推 git origin 后如何处理