Maven - определить порядок различных целей плагина в одной фазе - PullRequest
11 голосов
/ 22 февраля 2012

Следующий фрагмент является выдержкой из конфигурации плагина maven-cargo, но вопрос не зависит от этого конкретного плагина.

            <executions>
                <execution>
                    <id>start</id>
                    <phase>pre-integration-test</phase>
                    <goals>
                        <goal>deploy</goal>
                        <goal>start</goal>
                    </goals>
                </execution>
            </executions>

Эта конфигурация (давайте просто назовем ее плагином A) будет ожидать фазы pre-integration-test, а затем выстрелит в ее цели deploy и start (в этом порядке).

Скажем, у меня есть другой плагин B, который имеет отношение в той же фазе . Каковы мои варианты

  1. выполнить цели плагина B до (после) A? (someStuff -> deploy -> start)
  2. выполнить цели плагина B между целями плагина A (deploy -> someStuff -> start)

Я полагаю, что ответ на (1) равен здесь , связывая порядок целей с порядком определения плагина в POM. Но я понятия не имею о (2).

1 Ответ

11 голосов
/ 22 февраля 2012

Вы правы насчет (1). Если два плагина должны выполняться на одной и той же фазе, они будут выполняться в том порядке, в котором они объявлены в pom.xml.

Я не уверен на 100% в (2), но я думаю, что это невозможно без некоторых хаков, таких как exec-maven-plugin, например:

<!-- deploy -->
<plugin>
  <groupId>org.codehaus.cargo</groupId>
  <artifactId>cargo-maven2-plugin</artifactId>
  <executions>
    <execution>
      <id>deploy</id>
      <phase>pre-integration-test</phase>
      <goals>
        <goal>deploy</goal>
      </goals>
    </execution>
  </executions>
</plugin>
<!-- do something -->
<plugin>
  <groupId>some_other_plugin</groupId>
  <artifactId>some_other_plugin</artifactId>
  <executions>
    <execution>
      <id>someStuff</id>
      <phase>pre-integration-test</phase>
      <goals>
        <goal>some_goal</goal>
      </goals>
    </execution>
  </executions>
</plugin>
<!-- start -->
<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <executions>
    <execution>
      <id>start</id>
      <phase>pre-integration-test</phase>
      <goals>
        <goal>exec</goal>
      </goals>
      <configuration>
        <executable>mvn</executable>
        <commandlineArgs>org.codehaus.cargo:cargo-maven2-plugin:start -Dparam=value</commandlineArgs>
      </configuration>
    </execution>
  </executions>
</plugin>
...