4

我认识到 Maven 并不总是使用最新版本的插件。

例如org.codehaus.mojo:sonar-maven-plugin2.7 版本已于 10 月 19 日发布,但在 10 月 23 日,Maven 仍在使用 2.6 ( mvn sonar:sonar)。

我什至记得一些插件,其中最新版本比 Maven 决定使用的版本高出几个小版本。

是否有任何(中央)索引/列表/数据库可供 Maven 查找要使用的版本?如果是,在哪里可以手动访问?

4

3 回答 3

6

我知道这是一个古老的线程,但为了后代和准确性:所有pom.xmls 在逻辑上都继承自超级 POM。您总是可以通过键入以下内容来查看您的“真实”pom.xml外观:

mvn help:effective-pom

打印的结果pom.xml是超级 POM、您的pom.xml,当然还有混合中的任何父 POM 的组合。

超级 POM 由org.apache.maven.model.superpom.DefaultSuperPomProvider类提供(https://github.com/apache/maven/blob/bce33aa2662a51d18cb00347cf2fb174dc195fb1/maven-model-builder/src/main/java/org/apache/maven/model/superpom/DefaultSuperPomProvider.java #L56-L85)。它加载的资源是org/apache/maven/model/pom-4.0.0.xmlhttps://github.com/apache/maven/blob/bce33aa2662a51d18cb00347cf2fb174dc195fb1/maven-model-builder/src/main/resources/org/apache/maven/model/pom-4.0.0.xml# L23-L149 )。

于 2017-03-11T00:35:23.333 回答
4

据我所知,此链接将回答您的问题。

自动插件版本解析

当在 POM 或命令行中没有给出明确版本的情况下调用插件时,Maven 2.x 会选择可用的最新版本,其中最新版本可以是发布版或快照。为了稳定起见,Maven 3.x 更喜欢最新的发布版本而不是最新的快照版本。

鉴于自动插件版本解析强加的不可重现构建的威胁,就 POM 中的插件声明而言,此功能计划删除。Maven 3.x 的用户会发现它在检测到缺少插件版本时会输出警告,以鼓励将插件版本添加到 POM 或其父 POM 之一。可以使用 Enforcer 规则 requirePluginVersions 额外检查 POM 中缺少的插件版本

于 2015-10-27T15:10:52.737 回答
1

对于未指定版本的命令行执行,Maven 从 GA(组 ID/工件 ID)maven-metadata.xml 文件中查找最新版本。

示例: http ://repo1.maven.org/maven2/org/apache/maven/plugins/maven-clean-plugin/maven-metadata.xml

如果你将 Maven 目标的命令行执行编码到你的构建中,你应该为这些指定一个版本,否则你的构建可能会随着新版本的插件的发布而改变。

于 2015-10-28T13:03:18.620 回答