Можно ли выделить и запустить конкретную цель, связанную с фазой maven? - PullRequest
8 голосов
/ 12 февраля 2010

Обновлено (надеюсь) для уточнения : Если цель определена для выполнения во время данной фазы, возможно ли выполнить отдельную цель, не проходя через все фазы. Другими словами, возможно ли выполнить цель antrun:run (которая определена как часть этапа установки ниже) без получения зависимостей, generate-ресурсов, компиляции, тестирования, пакетов и т. Д.?

Я использую плагин antrun для создания zip-файла на этапе package, а также для удаления и копирования некоторых файлов на этапе install. Я понимаю, как запустить цели одного плагина maven, например: mvn antrun:run. Тем не менее, есть ли способ выполнить конкретную цель выполнения? Что-то вроде mvn antrun:run:execution-id или mvn phase:antrun:run?

В принципе, было бы неплохо, если бы я мог сказать maven ничего другого, кроме как запустить, например, задачи ant, определенные ниже, на этапе развертывания. Довольно утомительно ждать, пока maven пройдет все фазы, просто чтобы проверить, правильно ли работают задачи ant на этапе развертывания.

<executions>
  <!-- create zip file -->
  <execution>
    <id>create-zip</id>
    <phase>package</phase>
    <configuration>
      <tasks>
    ...create zip...
      </tasks>
    </configuration>
    <goals>
      <goal>run</goal>
    </goals>
      </execution>
  <!-- do some other stuff  -->
  <execution>
    <id>copy-files</id>
    <phase>install</phase>
    <configuration>
      <tasks>
    ...delete some files, copy some files ...
      </tasks>
    </configuration>
    <goals>
      <goal>run</goal>
    </goals>
      </execution>
    </executions>

Ответы [ 3 ]

6 голосов
/ 12 февраля 2010

Другими словами, можно ли запустить цель antrun: run (которая определяется как часть этапа установки ниже) без получения зависимостей, генерировать ресурсы, компиляцию, тестирование, пакет и т. Д.?

Нет, это не так. Хотя вы можете настроить плагин (с разделом <configuration> в элементе <plugin>) и вызвать в командной строке, вы не можете вызвать конкретный идентификатор выполнения (и, следовательно, <configuration>, специфичный для <execution>) .

Единственным решением в вашем случае было бы объявить плагин antrun в профиле, скажем, my-profile, для дублирования следующей части конфигурации для настройки плагина в этом профиле:

<plugin>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.3</version>
  <configuration>
    <tasks>
      ... delete some files, copy some files ...
    </tasks>
  </configuration>
</plugin>

и позвонить с нужным активным профилем:

mvn antrun:run -Pmy-profile
1 голос
/ 12 февраля 2010

Попробуйте подключаемый модуль exec maven ...

0 голосов
/ 12 февраля 2010

Например:

Когда вы запускаете jboss с maven, вы не видите вывод консоли jboss, но мне нужно, чтобы он отображался, поэтому я написал файл java, который читается в server.log (вывод консоли сервера) как он меняется, чтобы отобразить изменения, поэтому кажется, что консоль jboss действительно отображается (немного взломано, но работает). Итак, я дошел до того, что отвечаю на ваш вопрос, во время теста перед интеграцией я выполнил задачу Java, которая запускает мою программу Java. Вот как, конечно, с помощью плагина execute:

<plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.1</version>
                <executions>
                    <execution>
                        <id>console-start</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>java</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>org.eclipse.console.Main</mainClass>
                </configuration>
            </plugin>

Вы просто запускаете установку, и она выполняется во время предварительного теста интеграции, однако, если вы просто хотите выполнить что-то вроде java, используйте плагин execute. Извините, если ответ не уместен, у меня не хватило терпения подробно прочитать ваш вопрос, мое рабочее время истекло .. ура

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...