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

Jen*_*der 5 purge dependency-management maven

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

Parent
 L A
 L B
Run Code Online (Sandbox Code Playgroud)

A 依赖于取决于 B

两者都对其他库有各种依赖性

与此建设mvn clean install优良工程,但是当我们试图修剪所有依赖描述这里

mvn dependency:purge-local-repository
Run Code Online (Sandbox Code Playgroud)

我们收到一条错误消息,指出它无法将依赖项解析为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
Run Code Online (Sandbox Code Playgroud)

我目前的解释是,在实际构建过程中,B将首先构建并解决该问题,但是在清除过程中,没有任何构建过程,因此解决方案将失败。但是项目在那里,并且它的依赖项应该清除。我怎样才能解决这个问题?

-DactTransitively=false
Run Code Online (Sandbox Code Playgroud)

似乎没有任何改变。

Jen*_*der 6

虽然这似乎不是@Tunaki引用的确切问题,但其中的示例让我尝试了一下:

mvn dependency:purge-local-repository -DreResolve=false
Run Code Online (Sandbox Code Playgroud)

摆脱了异常,但未能真正重新加载我遇到问题的依赖项。在这一点上,我遇到了这个答案,这使我尝试

mvn dependency:purge-local-repository -DreResolve=false -DactTransitively=false
Run Code Online (Sandbox Code Playgroud)

解决了问题,尽管它似乎要求与我要实现的目标相反:-/


Tun*_*aki 3

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

来自保罗·吉尔的评论

我认为发生这种情况的原因是为了确定要删除的全套传递依赖项,pom 需要可用。如果 pom 已在前一个模块中解析,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 之外,我没有看到任何真正的解决方法。