我有一个几年前构建的 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/