Maven 如何解析要执行的插件版本?

How does Maven resolve a version of a plugin to execute?

我的本地存储库中有几个 maven-dependency-plugin 的下载版本。在放置在 org/apache/maven/plugins/maven-dependency-plugin/ 中的元数据文件中,列出了从 2.0-alpha-12.10 的版本。
版本 2.10 设置为 releaselatest.

尽管当 dependency:get 作为 CLI 的独立目标执行时,Maven 使用版本 2.1。这是插件的较少下载版本。此外,如果从本地存储库中删除该版本,Maven 会再次下载它。

使用 Maven 3.0.4。

问题:当没有明确指定时,Maven 如何确定将使用哪个版本的插件?

当从命令行执行插件的目标而不明确提供其版本时,Maven 将使用其最新版本,但声明为所有 Maven 构建的 super pom, that is, the implic parent pom 一部分的插件除外。

在这种情况下,maven-dependency-plugin 是父 pom 中声明的少量(且递减的)插件集的一部分,其版本 2.1specified 直到 Maven 版本3.0.5,从那个版本开始更新到2.8.

版本

此外,Maven 通过 default lifecycle bindings 解析插件版本,具体取决于 pom.xml 文件中声明的 packaging 选项(尽管不适用于命令行执行)。