7

我有一个多模块 maven 项目,我想让我的所有子模块都使用maven-compiler-pluginroot 中指定的pom.xml。我应该在哪里放置maven-compiler-plugin声明(在 root 中pom.xml):在<plugins>部分或<pluginManagement>部分中?问题也涉及到maven-release-plugin

4

2 回答 2

14

这 2 个部分 (pluginspluginManagement) 的用途略有不同。

第一个(plugins)用于指定您的项目(以及从父项目继承的所有子项目)的构建过程。如果您在此部分中包含一些插件,它将在每个子项目中执行,无论其类型如何。

第二个 ( pluginManagement) 用于指定从父项目继承的所有项目的通用插件设置(例如,插件版本和配置)。

说到你提到的 2 个插件。maven-compiler-plugin是一个默认插件,无论你是否指定它都会被执行。pluginManagement将其包含在其中并在那里指定其配置是有意义的。maven-release-plugin但是,默认情况下不绑定到任何生命周期阶段。因此,如果您希望它在所有子项目中执行,则必须将其添加到pluginssection.

于 2012-12-19T19:29:04.057 回答
1

这取决于你追求什么。如果您将它们包含在该plugins部分下,它们将为所有 POM 执行......包括 parent。如果您只希望子 POM 执行插件目标,那么您应该将它们放在pluginManagement. 但是,在这种情况下,您必须在每个子 POM 中启用它们。

也就是说,最简单的方法是plugins先尝试。如果没有构建失败,那么您就可以开始了。否则,您将需要将部分或全部移至pluginManagement.

于 2012-12-19T19:15:53.017 回答