mvn依赖:purge-local-repository在多模块项目

时间:2016-04-27 10:32:28

标签: maven dependency-management purge

我们有一个像这样的maven项目结构:

Parent
 L A
 L B

A取决于B

两者都有其他libs的各种依赖

使用mvn clean install构建此代码可以正常工作,但是当我们尝试使用

here所述修剪所有依赖项时
mvn dependency:purge-local-repository

我们收到一条错误消息,指出它无法将依赖关系解析为B:jar:snapshot-version

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.10:purge-local-repository (default-cli) on project A: Failed to refresh project dependencies for: A:jar:4.0.1-SNAPSHOT: required artifacts missing:
[ERROR] B:jar:6.0-5

我目前的解释是,在实际构建期间B首先获得构建并且可以得到解决,但是在清除期间没有任何构建因此解析失败。但是项目就在那里,其依赖关系应该被清除。我该如何解决这个问题?

-DactTransitively=false

似乎没有任何改变。

2 个答案:

答案 0 :(得分:5)

虽然它似乎不是确切的问题referenced by @Tunaki但是我在那里尝试这个例子:

mvn dependency:purge-local-repository -DreResolve=false

哪个摆脱了异常,但未能真正重新加载我遇到问题的依赖。在那一刻,我遇到了this answer让我尝试

mvn dependency:purge-local-repository -DreResolve=false -DactTransitively=false

解决了这个问题,虽然它似乎要求与我想要实现的相反: - /

答案 1 :(得分:2)

这看起来像是在Maven 3.0.4中通过回归引入的maven-dependency-plugin(JIRA问题MDEP-405)的错误。

来自Paul Gier's comment

  

我认为发生这种情况的原因是因为为了确定要删除的全套传递依赖项,poms需要可用。如果poms已在前一个模块中解析过,Maven将不会再次重新解析它们而只是失败。因此,依赖性对于已从本地存储库中删除的文件没有问题,但是当尝试在同一版本中解析同一文件两次时,maven依赖关系解析代码失败。

     

您可以尝试使用Maven 3.0.3进行构建,因为Maven 3.0.4中存在此更改:   http://mail-archives.apache.org/mod_mbox/maven-dev/201210.mbox/%3C5752023.Vp0WJBo1vZ%40bigmax%3E

这与回归MNG-5366相关联,目前尚未解决。

除了降级Maven之外,我没有看到任何真正的解决方法。