我怎么知道哪个项目正在从 Maven 请求特定的 jar

How do I know which project is requesting a specific jar from Maven

我正在使用 Eclipse,并且最近升级了我的所有项目以使用最新版本的库。 但是在 Maven 存储库中,我仍然可以看到旧版本的库。 我已经从 Maven 存储库中手动删除了旧库,但它总是回来。 我确信 Eclipse 中的所有项目都指向新版本:我已经检查了所有 pom.xml,我已经使用了 "Dependency Hierarchy" 工具等

有没有办法知道哪个项目告诉 Maven 下载旧版本的库?

非常感谢!

您可以使用 Maven dependency plugin 的树目标:

mvn dependency:tree

并使用 includes 选项进行过滤,该选项使用 [groupId]:[artifactId]:[type]:[version].

模式

您可以使用以下命令获取所有依赖项的树,然后找出特定工件的来源。

如果你在 linux/unix 基于 os.

,你可以用 grep 管道只显示相关的
mvn dependency:tree

谢谢你们,感激不尽,但这当然不是一个简单的方法。看起来你必须一个项目一个项目地做(我有很多)。加上我的大部分 pom 参考 poms 在其他文件夹中,它也无法处理。

回复:"and I have many"。在最顶层目录执行以下操作:

 find . -name "pom.xml" -type f -exec mvn dependency:tree -f {} ';' | grep '^\[.*\] [-+\\|].*'

语法详细信息可能从 Bash 到 Bash 不等。

提示:首先在最底层的项目目录中尝试以确保它按预期正常运行。由于您有很多项目,因此可能需要一段时间才能完成并识别可能的错误。