2015-11-02 2 views
2

Есть два гола, привязанных к тестовой фазе жизненного цикла Maven по умолчанию. Первая цель (в порядке появления в pom.xml) является:Maven 3 задание целей

<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> 

В тестовой фазе, безошибочный плагин выполняется первым, что противоречит с заданием FIFO Maven 3 в той же фазе. Я подтвердил, что цели имеют одинаковый порядок в эффективном пом. Возможно ли, что один из плагинов переопределяет порядок по умолчанию? Почему плагин surefire выполняется до Liquibase?

ответ

1

Вы правы, что Maven выполняет цели в порядке, так как они определены в POM, но в этом специальном случае вы использовали идентификатор default-test для второго выполнения, который имеет special meaning.

Я не могу найти справок об этом поведении прямо сейчас, но изменение вашего <id> на что-то еще приведет к восстановлению ожидаемого вами поведения.

Однако для этого особого случая снова, изменив идентификатор сделает maven-surefire-plugin выполнить дважды: она уже по умолчанию выполняется и добавление исполнения (с идентификатором, отличной default-test) добавит другой вместо переопределения умолчанию.

+0

Кроме того, я думаю, что выполнение errfire по умолчанию происходит до всех явно определенных исполнений в POM. –

Смежные вопросы