Maven 3目标排序

时间:2015-11-02 12:12:46

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

默认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中具有相同的顺序。是否有可能其中一个插件覆盖默认顺序?为什么在liquibase之前执行surefire插件?

1 个答案:

答案 0 :(得分:1)

你是正确的,Maven按照POM中定义的顺序执行目标,但在这种特殊情况下,你使用default-test标识符进行第二次执行,其中special meaning

我现在无法找到有关此行为的任何参考,但将<id>更改为其他内容将恢复您期望的行为。

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