如何在 Maven 中找出隐藏的依赖项和插件版本?

Posted

技术标签:

【中文标题】如何在 Maven 中找出隐藏的依赖项和插件版本?【英文标题】:How can I find out hidden versions of dependencies and plugins in Maven? 【发布时间】:2014-11-26 13:28:08 【问题描述】:

我们不需要指定我们使用的 Maven 依赖和插件的版本和其他参数。我们只能在父 POM 中执行一次,或者可能以其他方式在我们的子 POM 中继承该属性。

不幸的是,我多次遇到无法轻易找到依赖项和插件的真实参数的项目。 IE。依赖项的版本是空的,但在父 POM 中没有关于此的信息。

所以我的问题是:

    在Maven中指定依赖和插件参数的所有可能方式有哪些? IE。如果子 POM 的插件和父 pom 的插件管理中都不存在版本号,我在哪里可以查找版本号?

    是否有任何 Maven 命令可以找出 Maven 从何处获取这些参数?例如,我可能会使用dependency:tree 命令。它将打印一个依赖项列表,这将帮助我理解我所坚持的版本依赖项。但这是一个 hack,它不能帮助我使用插件。有没有更好的?

【问题讨论】:

第二个问题在这里有答案:How to find a Maven dependency version declaration imported from a BOM。总结一下:使用 mvn help:effective-pom -Dverbose=true 和帮助插件版本 3.2.0+ 【参考方案1】:

在执行任何命令之前,Maven 会构建“有效的 POM”,请参阅this *** answer 了解更多详细信息。您可以通过运行mvn help:effective-pom 查看任何项目的有效 POM。通常,当我运行此命令时,我会将输出重定向到一个文件中,以便我可以在文本编辑器中查看和搜索它。

您询问了 POM、依赖项和插件的特定部分。你在正确的轨道上,maven-dependency-plugin 帮助。我最常使用的目标是dependency:treedependency:resolvedependency:resolve-plugins。前两个辅助项目依赖,最后一个辅助插件。添加 -U 选项以强制 Maven 更新依赖项,而不管 update policies/repository metadata 值如何。

从空的本地存储库开始进行故障排除时也很有帮助。

最后但同样重要的是,当构建使用没有特定版本的插件时,Maven 会发出警告。始终指定显式版本来修复警告并避免出现this one 等问题。

【讨论】:

非常感谢!这正是我想要的。

以上是关于如何在 Maven 中找出隐藏的依赖项和插件版本?的主要内容,如果未能解决你的问题,请参考以下文章

如何在插件中访问 Maven 的依赖层次结构

Maven:类路径依赖项和启动器?

如何在gradle构建文件中将哪个依赖项和依赖项版本打包到war文件中?

在 maven 和 maven 插件中选择依赖版本

未指定版本的 Maven 兄弟模块依赖

如何在依赖解析之前运行 Maven 插件