我有一个多模块 maven 项目,我想让我的所有子模块都使用maven-compiler-plugin
root 中指定的pom.xml
。我应该在哪里放置maven-compiler-plugin
声明(在 root 中pom.xml
):在<plugins>
部分或<pluginManagement>
部分中?问题也涉及到maven-release-plugin
。
2 回答
这 2 个部分 (plugins
和pluginManagement
) 的用途略有不同。
第一个(plugins
)用于指定您的项目(以及从父项目继承的所有子项目)的构建过程。如果您在此部分中包含一些插件,它将在每个子项目中执行,无论其类型如何。
第二个 ( pluginManagement
) 用于指定从父项目继承的所有项目的通用插件设置(例如,插件版本和配置)。
说到你提到的 2 个插件。maven-compiler-plugin
是一个默认插件,无论你是否指定它都会被执行。pluginManagement
将其包含在其中并在那里指定其配置是有意义的。maven-release-plugin
但是,默认情况下不绑定到任何生命周期阶段。因此,如果您希望它在所有子项目中执行,则必须将其添加到plugins
section.
这取决于你追求什么。如果您将它们包含在该plugins
部分下,它们将为所有 POM 执行......包括 parent。如果您只希望子 POM 执行插件目标,那么您应该将它们放在pluginManagement
. 但是,在这种情况下,您必须在每个子 POM 中启用它们。
也就是说,最简单的方法是plugins
先尝试。如果没有构建失败,那么您就可以开始了。否则,您将需要将部分或全部移至pluginManagement
.