如何找出哪个maven工件/插件请求下载不再可用的依赖项

如何找出哪个maven工件/插件请求下载不再可用的依赖项,maven,maven-dependency-plugin,Maven,Maven Dependency Plugin,我在编译一个“旧”开源项目时遇到了以下问题: [ERROR] Failed to execute goal on project .... Can not transfer artifact x:y:z from ... 在项目pom.xml中定义的所有存储库中都找不到工件x:y:z 在查找有效的pom.xml之后,我找不到对x:y:z的任何引用 如何在不分析所有可传递依赖项的情况下找出哪个工件或插件正在请求缺少的依赖项?如果使用eclipe,您可以看到如下dep树:打开pom.xml并勾选“

我在编译一个“旧”开源项目时遇到了以下问题:

[ERROR] Failed to execute goal on project .... Can not transfer artifact x:y:z from ...
在项目pom.xml中定义的所有存储库中都找不到工件x:y:z

在查找有效的pom.xml之后,我找不到对x:y:z的任何引用


如何在不分析所有可传递依赖项的情况下找出哪个工件或插件正在请求缺少的依赖项?

如果使用eclipe,您可以看到如下dep树:打开pom.xml并勾选“dependency Hierarchy”选项卡


此外,您还可以尝试使用
mvn dependency:tree
,但如果您的一些dep丢失,我不能完全确定它是否有效

更新:似乎eclipse和dependency:tree都需要成功的工件解析才能工作,而您的情况并非如此

在这种情况下,我想您只剩下3个选项:

  • 清理缓存(擦除
    ~/.m2/存储库
    下的所有内容),运行构建并对
    ~/.m2/存储库
    中的文件执行发生搜索(搜索类似“有问题的工件id”)。一个或两个工件应在其pom中引用有问题的工件。这应该给你一个提示

  • 清理缓存并使用
    -X
    开关运行构建。这将使maven处于详细模式,您应该找到一些关于什么可能引用死依赖项的提示(将您的注意力集中在下载顺序上,哪些工件得到了解决,检查POM中已解决工件的依赖项)

  • 愚蠢得要命-在pom中注释/取消注释DEP,看看是什么导致了上述错误


  • mvn依赖项:如果任何依赖项丢失或无法访问,树将始终失败,m2e插件也是如此。1。下载旧工件需要花费我几个小时,所以我肯定不会清理缓存;2. 
    -X
    和任何其他调试标志都没有帮助,日志显示更详细,只生成无用的跟踪条目;3.我本打算按照你的建议做同样的事情,但最终在docjar.com上找到了
    x:y:z
    ,所以我使用了
    mvn install:install file
    。总之,@leo,谢谢你的建议。我希望如果有人在Apache和Maven项目中工作,就会注意到这个帖子,所以他可以考虑添加一个特性:“谁引用了一个缺少的依赖项”到 Maven依赖插件> />代码> @ WZZ PA酷。顺便说一句,正在清理(1)中的缓存。这不是必需的。它更倾向于削减与当前项目无关的依赖项。