我有一个多模块maven项目,我想让我的所有子模块都使用根maven-compiler-plugin
中指定的pom.xml
。我应该在maven-compiler-plugin
声明(在pom.xml
}中):<plugins>
部分或<pluginManagement>
部分?问题也与maven-release-plugin
有关。
答案 0 :(得分:14)
这两个部分(plugins
和pluginManagement
)的目的略有不同。
第一个(plugins
)用于指定项目的构建过程(以及从父项目继承的所有子项目)。如果在此部分中包含一些插件,则无论其类型如何,都将在每个子项目中执行该插件。
第二个(pluginManagement
)用于为从父项目继承的所有项目指定常见的插件设置(例如,插件版本和配置)。
说到你提到的2个插件。 maven-compiler-plugin
是一个默认插件,无论您是否指定它都将执行。将它包含在pluginManagement
中并在那里指定其配置是有意义的。但是,maven-release-plugin
默认情况下不受任何生命周期阶段的约束。因此,如果您希望在所有子项目中执行该项目,则必须将其添加到plugins
部分。
答案 1 :(得分:1)
这取决于你所追求的。如果您将它们包含在plugins
部分下,它们将针对所有POM执行... 包括父。如果您只希望子POM执行插件目标,那么您应该将它们放在pluginManagement
下。但是,在这种情况下,您必须在每个子POM中启用它们。
尽管如此,最简单的方法是首先尝试plugins
。如果没有构建失败,那么你很高兴。否则,您需要将部分或全部移动到pluginManagement
。