在同一个插件中有两个目标在maven中意味着什么?



以下是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-testverify期间各有一个?

编辑

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

首先你给出的配置没有意义,因为文档说不同:

<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绑定到相同的生命周期阶段。如果你省略了phase,就像我的例子一样(从文档中复制),这意味着这两个目标将绑定到插件开发人员认为有用的生命周期阶段。这意味着将integration-test目标绑定到integration-test生命周期阶段,将verify目标绑定到verify生命周期阶段。

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

  • 需要执行一个Maven项目。
  • 要求在scope: test中工件的依赖解析。
  • 目标是线程安全的,并支持并行构建。默认绑定到生命周期阶段:integration-test。

最后一行会告诉你插件开发者决定将插件目标默认绑定到哪个生命周期阶段。

现在回答你的问题:

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

是否验证目标(绑定到验证阶段)将在其中执行集成测试阶段吗?

。根据给定的配置验证目标是NOT绑定到验证生命周期阶段,因为它绑定到integration-test阶段。

最新更新