在<pluginManagement>的内部和外部声明<plugin>的效果是什么

时间:2019-08-21 04:46:59

标签: maven maven-plugin maven-surefire-plugin

我从官方文档中了解到的定义是在所有子项目中共享的。在子项目中,当我在子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插件。我在这里想念什么?谢谢

0 个答案:

没有答案