根据
Default Lifecycle Bindings,包装pom的绑定是:
Default Lifecycle Bindings – Packaging
pom
06000
因此,如果您的父POM有< packages> pom< packaging> (这应该是注释中指出的情况),如果你绑定你的插件到上面的其他阶段(参见Lifecycle Reference的综合列表),他们不会在父POM的构建过程中执行。
(编辑:我的初始答案是错误的如果你绑定一个插件目标到一个特定的阶段,它会在该阶段触发,无论项目的包装,Default Lifecycle Bindings没有任何关系,只是默认的生命周期绑定,所有重要的是,如果插件绑定的阶段是build lifecyle的一部分)
正如你所指出的,你可以使用父pom中的pluginManagement来配置插件,但是如果你真的想在children模块中而不是在父模块中执行插件目标(你可能有很好的理由这样做,但大多数时间,插件不会对有pom包装没有任何内容的模块有太大的影响),你必须在孩子的插件元素中引用插件。
应用于您的示例,父pom.xml可以定义以下规范:
pom
...
child
...
org.apache.maven.plugins
maven-jar-plugin
2.2
my-execution-id
integration-test
jar
...
...
在每个子pom.xml中,只需要以下内容:
...
...
org.apache.maven.plugins
maven-jar-plugin
...