【问题标题】:Maven 3 goal orderingMaven 3 目标排序
【发布时间】:2016-02-02 07:38:29
【问题描述】:

默认 Maven 生命周期的测试阶段绑定了两个目标。第一个目标(按 pom.xml 中出现的顺序)是:

<artifactId>liquibase-maven-plugin</artifactId>
<version>3.4.1</version>
<executions>
  <execution>
    <id>update</id>
    <phase>test</phase>
    <goals>
      <goal>update</goal>
    </goals>
  </execution>
</executions>

第二个是:

<artifactId>maven-surefire-plugin</artifactId>
<version>2.7.1</version>
<executions>
  <execution>
    <id>default-test</id>
    <phase>test</phase>
    <goals>
      <goal>test</goal>
    </goals>
  </execution>
</executions>

在测试阶段,先执行surefire插件,这与Maven 3 FIFO在同一阶段的目标顺序相矛盾。我验证了目标在有效的 pom 中具有相同的顺序。是否有可能其中一个插件覆盖了默认顺序?为什么surefire插件在liquibase之前执行?

【问题讨论】:

    标签: maven maven-3 maven-surefire-plugin


    【解决方案1】:

    您是对的,Maven 按照 POM 中定义的顺序执行目标,但在这种特殊情况下,您使用 default-test 标识符进行第二次执行,它有一个 special meaning

    我现在找不到有关此行为的任何参考,但将您的 &lt;id&gt; 更改为其他内容将恢复您期望的行为。

    但是,对于这种特殊情况,更改 id 将使maven-surefire-plugin 执行两次:默认情况下它已经执行,添加一个执行(id 不同于default-test)将添加另一个而不是覆盖默认一个。

    【讨论】:

    • 另外,我认为 surefire 的默认执行发生在 POM 中所有明确定义的执行之前。
    猜你喜欢
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 2017-04-22
    • 2018-08-13
    • 2012-12-21
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多