从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编译器插件,我将得到一个默认版本,即maven 3.0.4的2.3.2版本。这意味着在正常情况下,您将获得某个插件的默认版本。
问题是:插件的默认版本会随时间变化吗?我想是这样的,例如maven 4.x可能会使用较新的默认版本的编译器插件。
如果是这样,那么强制用户指定版本有什么好处?在许多情况下,这将是不可预测的,只看pom.xml,提前知道将使用哪个maven版本,也就是说,将使用哪个maven插件版本。
我不明白这背后的逻辑。因此,人们应该总是被迫指定使用中的每个插件的版本(这将是相当麻烦的)。
发布于 2013-02-06 22:12:51
默认版本的插件是Maven发布包的一部分。因此,它们在不同的版本中是不同的。这意味着切换Maven的版本可能会给你带来一个令人讨厌的惊喜。Maven开发社区认为这是一个糟糕的计划;您应该能够在不损失构建可重复性的情况下更改Maven的次要版本(当然,除了bug)。所以,我们放了这个警告,温和地鼓励你锁定你的插件版本。
https://stackoverflow.com/questions/14730672
复制相似问题