如何防止maven解决本地存储库中的依赖关系

时间:2010-05-05 11:04:10

标签: maven-2

有没有办法告诉maven(在执行 mvn package mvn site 或...时)不解析本地存储库中的依赖项?

这个问题的背景:有时,当以前缓存的依赖项(例如SomeProject-0.7-ALPHA)在远程存储库中不再可用时,我会遇到问题。在我的本地构建中,一切仍然正常,因为之前已经缓存了依赖项。一旦我与他人分享我的pom,他们可能会遇到麻烦,因为他们没有该依赖项的缓存版本,并且无法再从远程存储库解析依赖关系。

任何帮助将不胜感激。提前谢谢!

2 个答案:

答案 0 :(得分:16)

  

有没有办法告诉maven(在执行mvn包,mvn站点或...时)不解析本地存储库中的依赖项?

不,这就是整个依赖项解析的工作方式(通过本地存储库)。

  

有时,当以前缓存的依赖项(例如SomeProject-0.7-ALPHA)在远程存储库中不再可用时,我会遇到问题。

很抱歉,说明显而易见但从远程存储库中删除依赖项是一种可怕的做法,并导致......以及您所面临的那种麻烦。如果可能的话,避免这样做。

  

当我与他人分享我的pom时,他们可能会遇到麻烦,因为他们没有该依赖项的缓存版本,并且无法再从远程存储库中解析依赖关系。

检查事物是否适用于其他人的一种方法是清除您要从本地存储库共享的项目的依赖关系并重新解析它们。当然,手动执行此操作会非常痛苦,但好消息是Maven Dependency Pluginpurge-local-repository目标。

mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:purge-local-repository  \
    -DreResolve=true \
    -DactTransitively=true \ 
    -Dverbose=true

如果失败了,那么你知道某些东西丢失了,无法解决,这基本上就是你想知道的。但是你也丢失了它,所以如果这对你很重要,请备份你的存储库。

答案 1 :(得分:2)

maven构建的基本测试是删除本地存储库.m2 / repository并尝试构建(mvn包)并查看它是否正常工作。如果没有,你在这里有其他问题。如上所述,问题似乎是您正在使用的过程。如果远程存储库中的依赖项不再可用,则还有另一个问题。您使用的是Repository Manager,例如Nexus,Archiva,Artifactory?