2016-04-18 6 views
1

У меня проблема с заказом плагинов Maven. Я хотел бы выполнить плагин в порядке декларации:Выполнение заказа плагина Maven

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>test</groupId> 
    <artifactId>test</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-antrun-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>task-1</id> 
         <goals> 
          <goal>run</goal> 
         </goals> 
         <phase>initialize</phase> 
         <configuration> 
          <target> 
          </target> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>exec-maven-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>task-2</id> 
         <goals> 
          <goal>exec</goal> 
         </goals> 
         <phase>initialize</phase> 
        </execution> 
       </executions> 
       <configuration> 
        <executable>cmd</executable> 
        <arguments> 
         <argument>/c</argument> 
         <argument>rem</argument> 
        </arguments> 
       </configuration> 
      </plugin> 
      <plugin> 
       <artifactId>maven-antrun-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>task-3</id> 
         <goals> 
          <goal>run</goal> 
         </goals> 
         <phase>initialize</phase> 
         <configuration> 
          <target> 
          </target> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

Я ожидал, что порядок выполнения: задачи-1, задача-2, задача-3

Но после выполнения mvn initialize, фактический порядком является задача -1, task-3, task-2:

[INFO] --- maven-antrun-plugin:1.3:run (task-1) @ test --- 
[INFO] Executing tasks 
[INFO] Executed tasks 
[INFO] 
[INFO] --- maven-antrun-plugin:1.3:run (task-3) @ test --- 
[INFO] Executing tasks 
[INFO] Executed tasks 
[INFO] 
[INFO] --- exec-maven-plugin:1.4.0:exec (task-2) @ test --- 

Что нужно изменить для выполнения плагинов в том порядке, в котором я хочу?

ответ

3

Я ожидаю, что Maven предупредил о дублированном плагине, то есть maven-antrun-plugin. Maven не может иметь дублирующие плагины, поэтому результат состоит в том, что исполнительный блок задачи-3 объединяется в первый maven-antrun-plugin. И теперь Maven будет проходить через все плагины сверху вниз и искать блоки выполнения, связанные с фазой проверки. Это объясняет результат. Есть ли возможность контролировать порядок в этом случае? Нет, не в той же фазе.

+0

Спасибо за объяснение. Да, было предупреждение «дублировать объявление плагина». Кроме того, это огромное ограничение в модели исполнения Maven ... – snorbi

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