在同一个插件中有两个目标的意思是什么?

时间:2015-05-21 07:10:02

标签: maven maven-3 maven-plugin

以下是pom.xml

的示例
                   <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-failsafe-plugin</artifactId>
                            <version>2.18.1</version>
                            <configuration>
                                ......
                            </configuration>
                            <executions>
                                <execution>
                                    <goals>
                                        <goal>integration-test</goal>
                                        <goal>verify</goal>
                                    </goals>
                                    <phase>integration-test</phase>
                                </execution>
                            </executions>
                        </plugin>
                     </plugins>
  1. 这里有两个目标是什么意思?
  2. 验证目标(绑定验证阶段)是否会在integration-test阶段执行?
  3. integration-testverify目标是否在集成测试期间以及以什么顺序执行?
  4. 当我运行mvn clean verify时,verify目标执行了两次?一个在integration-test期间,一个在verify期间?
  5. 修改

    鉴于下面的答案和链接文档,这是否意味着当我运行mvn verify时,插件被调用两次 - 一个在integration-test阶段和verify阶段。

1 个答案:

答案 0 :(得分:2)

首先,您的给定配置没有意义,导致文档says different

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>2.18.1</version>
        <executions>
          <execution>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

微妙的区别是给出了phase。在您的情况下,您提供了phase,这意味着将目标integration-testverify绑定到同一个life cycle phase。如果省略我的示例中的phase(从文档中复制),则意味着这两个目标将绑定到插件开发人员认为有用的生命周期阶段。这意味着将integration-test目标与integration-test生命周期阶段和verify目标绑定到verify生命周期阶段。

您可以在文档中看到目标绑定的阶段,例如here(摘自文档):

  • 需要执行Maven项目。
  • 需要在范围内对工件进行依赖性解析:test。
  • 目标是线程安全的,并支持并行构建。 默认情况下绑定到生命周期阶段:integration-test。

最后一行将为您提供默认情况下插件开发人员决定绑定插件目标的生命周期阶段的信息。

现在回答你的问题:

以这种方式给出它们意味着在同一生命周期阶段(集成测试)中执行这两个目标。订单由pom文件中的订单给出。

  

是否会执行验证目标(绑定验证阶段)   整合测试阶段?

没有。基于给定的配置,验证目标是 NOT 绑定以验证生命周期阶段,导致它被绑定到integration-test阶段。