2011-06-14 124 views
4

我有一个几年前建成的Maven项目,现在我需要做一些更新。我的项目的一个依赖项在其POM中列出的Maven存储库不再存在。我现在得到构建失败。Maven资源库的继承和覆盖

我会想我的POM或Settings.xml中的存储库列表会胜过依赖项的POM中列出的任何存储库;否则Maven会在无法连接到已停用的存储库后尝试存储库。相反,它只是因构建失败而爆炸。

此外,我已经在我的本地存储库中具有所需的依赖项。我会另外想到Maven会使用它。

有没有办法重写继承的存储库清单,或告诉Maven在回购问题的情况下携带?

回答

0

如果您依赖的工件是快照版本,那么maven会在您每次构建时检查新快照,这就是为什么将您的依赖关系锁定到发布版本的好习惯。

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

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

我通常设置一个本地托管仓库管理器(优选nexus),然后定义mirrorOf(*)=本地回购经理/ URL。
Nexus允许将多个回购按照预定义的搜索顺序进行分组。 Nexus回购可以在本地托管或缓存/代理公共回购。
我通常在集团的前面有一个本地托管的第三方回购商店,在那里我可以存储未在公开回购库中发布的工件。