正如标题所说。最近,当我想在我的POM配置中使用发布标志时,我发现了这一点。为什么Maven使用如此旧的版本?
我应该补充一句,我使用的是最新的Maven版本(3.8.6)。
km0tfn4u1#
为什么Maven使用如此旧的版本?
一言以蔽之:可再生性。
更改插件版本号可能会导致影响Maven构建的行为发生变化。现在,如果开发人员在他们的POM文件中更改了一个显式的插件版本,我们有理由认为他们是有意这样做的。无论哪种方式,改变的决定都是他们的。
另一方面,当人们依赖默认的插件版本号时,他们不会期望它们会根据安装的Maven的确切版本而有所不同。如果一些旧项目的构建说明要求他们安装过时版本的Maven,他们会不高兴的。如果安装新的Maven版本来(比方说)修补安全问题还更改默认插件版本和……他们会不高兴的。出乎意料地破坏了他们的构建。
因此,Maven团队对更改默认插件版本和默认属性非常谨慎。
无论哪种方式,解决方案都掌握在你自己手中。如果您想使用任何插件的更新版本,只需在项目的父POM文件中放置一个显式的插件版本即可。
fbcarpbf2#
每个Maven版本可以包含不同版本的核心插件。
如果您没有在项目中锁定使用过的插件版本,则当您更改使用过的Maven版本时,Build可以使用不同版本的插件。
这会导致您项目构建在不同的Maven版本中无法重现。
所以推荐的方法是锁定项目中的所有插件版本,您应该创建pluginManagement,并将项目中的所有插件版本都放在您的父POM中。
更多的Maven 4将产生警告,情况是这样的:https://issues.apache.org/jira/browse/MNG-6562
2条答案
按热度按时间km0tfn4u1#
为什么Maven使用如此旧的版本?
一言以蔽之:可再生性。
更改插件版本号可能会导致影响Maven构建的行为发生变化。现在,如果开发人员在他们的POM文件中更改了一个显式的插件版本,我们有理由认为他们是有意这样做的。无论哪种方式,改变的决定都是他们的。
另一方面,当人们依赖默认的插件版本号时,他们不会期望它们会根据安装的Maven的确切版本而有所不同。如果一些旧项目的构建说明要求他们安装过时版本的Maven,他们会不高兴的。如果安装新的Maven版本来(比方说)修补安全问题还更改默认插件版本和……他们会不高兴的。出乎意料地破坏了他们的构建。
因此,Maven团队对更改默认插件版本和默认属性非常谨慎。
无论哪种方式,解决方案都掌握在你自己手中。如果您想使用任何插件的更新版本,只需在项目的父POM文件中放置一个显式的插件版本即可。
fbcarpbf2#
每个Maven版本可以包含不同版本的核心插件。
如果您没有在项目中锁定使用过的插件版本,则当您更改使用过的Maven版本时,Build可以使用不同版本的插件。
这会导致您项目构建在不同的Maven版本中无法重现。
所以推荐的方法是锁定项目中的所有插件版本,您应该创建pluginManagement,并将项目中的所有插件版本都放在您的父POM中。
更多的Maven 4将产生警告,情况是这样的:https://issues.apache.org/jira/browse/MNG-6562