Maven插件的多个配置标签

时间:2019-05-10 13:27:43

标签: java maven maven-3

根据maven POM reference,我们可以为maven插件定义多个<configuration>标签。

        <plugin>
            <groupId/>
            <artifactId/>
            <version/>
            <extensions/>
            <executions>
                <execution>
                <id/>
                <phase/>
                <goals/>
                <inherited/>
                <configuration/>

            </execution>

        </executions>
        <dependencies>
            ...
        </dependencies>
        <goals/>
        <inherited/>
        <configuration/>
    </plugin>

如果您看到<configuration>标签内有一个<execution>,而其他标签外。让我们举个例子来更清楚地了解它:

示例:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.18.1</version>
    <executions>
      <execution>
        <id>default-test</id>
        <phase>test</phase>
        <goals>
          <goal>test</goal>
        </goals>
        <configuration>
          <includes>
            <include>**/*Tests.java</include>
            <include>**/*Test.java</include>
          </includes>
          <excludes>
            <exclude>**/Abstract*.java</exclude>
          </excludes>
        </configuration>
      </execution>
    </executions>

    <configuration>
      <includes>
        <include>**/*Tests.java</include>
        <include>**/*Test.java</include>
      </includes>
      <excludes>
        <exclude>**/Abstract*.java</exclude>
      </excludes>
    </configuration>

  </plugin>

考虑以下surefire插件。它有2个<configuration>。一个在<execution>内部,另一个在外部。

两者之间有什么区别?请以一般术语解释,而不仅限于surefire插件示例。外部有点像全局配置吗?

1 个答案:

答案 0 :(得分:1)

一个是全局配置,另一个是特定于执行的配置

只要没有其他替代,全局便适用。当您调用插件的目标时(如您的示例所示),它不涉及任何特定的执行,因此它将使用全局配置

但是请记住,某些插件确实声明了默认执行并将其绑定到某个阶段-在调用阶段而不是目标时,这可能会干扰配置解析。