应该放在哪里maven-compiler-plugin声明:在<plugins>或<pluginmanagement>?</pluginmanagement> </plugins>

时间:2012-12-19 19:06:53

标签: java maven

我有一个多模块maven项目,我想让我的所有子模块都使用根maven-compiler-plugin中指定的pom.xml。我应该在maven-compiler-plugin声明(在pom.xml}中):<plugins>部分或<pluginManagement>部分?问题也与maven-release-plugin有关。

2 个答案:

答案 0 :(得分:14)

这两个部分(pluginspluginManagement)的目的略有不同。

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

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

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

答案 1 :(得分:1)

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

尽管如此,最简单的方法是首先尝试plugins。如果没有构建失败,那么你很高兴。否则,您需要将部分或全部移动到pluginManagement