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

what does having two goals in same plugin mean in 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-test 期间,一个在 verify?
  5. 期间

编辑

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

首先你给出的配置没有意义,导致文档 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 项目。
  • 需要范围内工件的依赖性解析:测试。
  • 目标是线程安全的并且支持并行构建。 默认绑定到生命周期阶段:集成测试。

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

现在回答您的问题:

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

Does verify goal (bound to verify phase) will be executed in integration-test phase?

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