Как вы заставляете maven выполнять antrun: run task после всех пакетных задач в POM с дочерними модулями? - PullRequest
8 голосов
/ 31 июля 2010

У меня есть родительский POM с кучей дочерних модулей. Я хочу запустить задачу antrun: run после того, как все дети выполнили задачу package (я использую Ant для упаковки своего приложения, так как я перестал выяснять, как получить сборку работать правильно).

Мне нужно, чтобы задача antrun выполнялась после всех дочерних элементов - но я не могу связать ее с фазой package , так как родительский пакет "упаковывается" перед дочерними элементами, и мне нужно муравей, чтобы бежать потом.

Есть ли способ сделать это одной командой?

Простой обходной путь, конечно же, заключается в запуске 2 команд maven:

mvn package; mvn antrun:run

Но я хочу сделать это за один раз, если это возможно

mvn package antrun:run

выдает неправильное поведение - запускает antrun: запускается до фазы дочерних проектов phase.

В идеале я мог бы просто набрать

mvn package

И запустите package phase для всех дочерних элементов, а затем выполните antrun: run для parent.

Ответы [ 3 ]

12 голосов
/ 31 июля 2010

Мне нужно, чтобы задача antrun выполнялась после всех дочерних элементов, но я не могу связать ее с фазой пакета, поскольку родительский компонент "упакован" перед дочерними элементами, и мне нужно, чтобы ant запускался после.1003 *

Создайте еще один модуль, который зависит от всех дочерних элементов (так что это будет последний проект во время сборки реактора), и привяжите ваши вещи для запуска в package в этом модуле.Затем просто запустите mvn package из корневого проекта.

3 голосов
/ 31 марта 2011

Put

<inherited>false</inherited> 

в определении вашего плагина:

<plugin>
<artifactId>maven-antrun-plugin</artifactId>    
           <inherited>false</inherited>
              <executions>
                 <execution>
                   <phase>compile</phase>
                   <configuration>

                     <tasks>
                       <ant antfile="buildall.xml">

                       </ant>
                    </tasks>
                 </configuration>
                 <goals>
                    <goal>run</goal>
                </goals>
              </execution>
           </executions>
       </plugin>
0 голосов
/ 31 июля 2010

Сначала вы должны указать выполнение для плагина antrun. Это автоматизирует запуск этого плагина.

Затем вы должны нажать maven, чтобы запустить плагин пакета перед плагином antrun . Это можно сделать, когда вы установите пакетный плагин setup перед antrun plugin setup.

Пример настройки:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
  </plugin>
  <plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.4</version>
    <executions>
      <execution>
        <phase> package </phase>
        <configuration>
          <tasks>

            <!--
              Place any Ant task here. You can add anything
              you can add between <target> and </target> in a
              build.xml.
            -->

          </tasks>
        </configuration>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...