为什么最新的版本是3.10.1,而maven-编译器-plugin 3.1的默认版本是2013年的版本?

wztqucjr  于 2022-10-05  发布在  Maven
关注(0)|答案(2)|浏览(350)

正如标题所说。最近,当我想在我的POM配置中使用发布标志时,我发现了这一点。为什么Maven使用如此旧的版本?

我应该补充一句,我使用的是最新的Maven版本(3.8.6)。

km0tfn4u

km0tfn4u1#

为什么Maven使用如此旧的版本?

一言以蔽之:可再生性。

更改插件版本号可能会导致影响Maven构建的行为发生变化。现在,如果开发人员在他们的POM文件中更改了一个显式的插件版本,我们有理由认为他们是有意这样做的。无论哪种方式,改变的决定都是他们的。

另一方面,当人们依赖默认的插件版本号时,他们不会期望它们会根据安装的Maven的确切版本而有所不同。如果一些旧项目的构建说明要求他们安装过时版本的Maven,他们会不高兴的。如果安装新的Maven版本来(比方说)修补安全问题更改默认插件版本和……他们会不高兴的。出乎意料地破坏了他们的构建。

因此,Maven团队对更改默认插件版本和默认属性非常谨慎。

无论哪种方式,解决方案都掌握在你自己手中。如果您想使用任何插件的更新版本,只需在项目的父POM文件中放置一个显式的插件版本即可。

fbcarpbf

fbcarpbf2#

每个Maven版本可以包含不同版本的核心插件。

如果您没有在项目中锁定使用过的插件版本,则当您更改使用过的Maven版本时,Build可以使用不同版本的插件。

这会导致您项目构建在不同的Maven版本中无法重现。

所以推荐的方法是锁定项目中的所有插件版本,您应该创建pluginManagement,并将项目中的所有插件版本都放在您的父POM中。

更多的Maven 4将产生警告,情况是这样的:https://issues.apache.org/jira/browse/MNG-6562

相关问题