默认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插件?
答案 0 :(得分:1)
你是正确的,Maven按照POM中定义的顺序执行目标,但在这种特殊情况下,你使用default-test
标识符进行第二次执行,其中special meaning。
我现在无法找到有关此行为的任何参考,但将<id>
更改为其他内容将恢复您期望的行为。
但是,对于这种特殊情况,更改id将使maven-surefire-plugin
执行两次:默认情况下已执行,并且添加执行(ID不同于default-test
)将添加另一个而不是覆盖默认值。