【问题标题】:what does having two goals in same plugin mean in maven?在 Maven 中,在同一个插件中有两个目标意味着什么?
【发布时间】:2015-05-21 07:10:01
【问题描述】:

这是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 期间?

编辑

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

【问题讨论】:

  • 您是否尝试过自己从命令行运行此脚本?

标签: maven maven-3 maven-plugin


【解决方案1】:

首先你给定的配置没有意义,导致文档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文件中的顺序给出。

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

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

【讨论】:

  • 感谢您的详尽回答。但考虑到您链接的文档中的方式,当我运行mvn verify 时,插件会被调用两次(一次在集成测试阶段,一次在验证阶段)
  • 你能帮忙编辑我的问题吗?我会马上接受这个答案。
猜你喜欢
  • 2010-11-07
  • 1970-01-01
  • 2018-11-11
  • 1970-01-01
  • 1970-01-01
  • 2022-12-12
  • 2016-12-31
  • 1970-01-01
相关资源
最近更新 更多