我从官方文档中了解到的定义是在所有子项目中共享的。在子项目中,当我在子POM下声明它们时,我从父那里“插入”了我需要的插件,而那些我未声明的插件将被忽略。
但是,使用mvn help:effective-pom
生成的有效POM则显示为其他情况。让我们来
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
</plugin>
以为例。我在 parent POM中声明了Surefire插件,但没有将其添加到 child POM中。我在生成的 child 有效POM中看到的是
(儿童POM的一部分)
<build>
...
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
...
</plugin>
...
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
<executions>
<execution>
<id>default-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
孩子POM包含Surefire插件,应该忽略掉它,所以我认为。它不能像<dependency>
和<dependencyManagement>
那样工作吗?我没有在Super POM中看到声明的Surefire插件。我在这里想念什么?谢谢