我认识到Maven并不总是使用最新版本的插件。
例如,org.codehaus.mojo:sonar-maven-plugin
版本2.7已于10月19日发布,但在10月23日,Maven仍然使用了2.6(mvn sonar:sonar
)。
我甚至还记得一些插件,其中最新版本是Maven决定使用的版本之上的几个小版本。
是否有任何(中央)索引/列表/数据库,其中Maven查找要使用的版本?如果是,可以手动访问哪里?
答案 0 :(得分:4)
据我所知,link会回答你的问题。
自动插件版本解析
在没有POM中给出的显式版本的情况下调用插件时 或者在命令行中,Maven 2.x用于选择最新版本 最新版本可以是发布版本还是版本 快照。为了稳定起见,Maven 3.x更喜欢最新的 发布最新快照版本的版本。
鉴于自动施加的不可重现的构建的威胁 插件版本解析,此功能计划删除为 就POM中的插件声明而言。 Maven的用户 当检测到丢失的插件版本时,3.x会发现它会输出警告,以鼓励将插件版本添加到POM或 其中一个父POM。 Enforcer规则requirePluginVersions可以 另外用于检查POM中缺少的插件版本
答案 1 :(得分:2)
我知道这是一个古老的线索,但为了后代和准确性:所有pom.xml
逻辑上都继承自super 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.xml
(https://github.com/apache/maven/blob/bce33aa2662a51d18cb00347cf2fb174dc195fb1/maven-model-builder/src/main/resources/org/apache/maven/model/pom-4.0.0.xml#L23-L149)。
答案 2 :(得分:1)
对于命令行执行,如果未指定版本,Maven将从GA(组ID /工件ID)maven-metadata.xml文件中查找最新版本。
示例:http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-clean-plugin/maven-metadata.xml
如果您将Maven目标的命令行执行编码到您的构建中,您应该为这些构建指定版本,否则您的构建可能会随着新版本的插件的发布而发生变化。