2

从 maven 3 开始,强烈建议指定插件的版本。例如,指定 maven-compiler-plugin(为了指定 java 目标版本),如果没有指定版本,maven 会报错:

[WARNING] Some problems were encountered while building the effective model for com.example:ex1:jar:0.0.1-SNAPSHOT
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 20, column 12
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.

但是,我可以理解其中的逻辑:

如果我不指定 maven-compiler-plugin,我会得到一个默认版本,对于 maven 3.0.4 是 2.3.2。这意味着在正常情况下,您将获得插件的一些默认版本。

问题:插件的默认版本会随着时间而变化吗?我猜是这样,例如 maven 4.x 可能会使用较新的默认版本的编译器插件。

如果是这样的话,那么强制用户指定版本有什么好处呢?在很多情况下,无论如何都是不可预知的,只看pom.xml,就可以提前知道将使用什么maven版本,即使用什么maven插件版本。

我不明白这背后的逻辑。因此,必须始终强制指定使用中的每个插件的版本(这将非常麻烦)。

4

1 回答 1

2

插件的默认版本是 Maven 发布包的一部分。因此,它们因版本而异。这意味着切换 Maven 版本可能会让您大吃一惊。Maven 开发社区认为这是一个糟糕的计划。您应该能够更改 Maven 的次要版本而不会失去构建可重复性(当然,除了错误)。因此,我们发出此警告,以温和地鼓励您锁定您的插件版本。

于 2013-02-06T14:12:50.970 回答