Как запустить причал: запустить войну, используя войну, определенную координатами мавена? - PullRequest
6 голосов
/ 13 февраля 2010

Справочная информация: я настраиваю модуль функциональных тестов в проекте maven. Для тестирования мы используем maven-jetty-plugin .

У меня настроен плагин Jetty , как описано здесь (чтобы хорошо играть с плагином Failsafe), но я хотел бы развернуть артефакт войны из нашего основного веб-модуля, используя причал (который был только что установлен в локальное хранилище maven к тому времени, когда работает модуль функционального тестирования).

Цель run-war плагина Jetty содержит элемент <webApp>, который ведет на верёвочный путь к войне. Я бы предпочел указать войну для развертывания, используя maven координаты, определенные нашим веб-модулем. Есть ли способ сделать это?

Возможные обходные пути:

  1. В разделе 4.13 «Улучшенных сборок с Maven» описано использование груза для развертывания войны, указанной с использованием координат maven, но это серьезный перебор, учитывая, что мы используем причал.
  2. Более разумным IMO является использование зависимости: копировать, чтобы скопировать только что построенный и установленный военный артефакт по фиксированному пути в целевой директории модуля функциональных тестов, который я затем могу предоставить в элементе конфигурации <webApp> плагина Jetty. * * 1022

1 Ответ

9 голосов
/ 14 февраля 2010

Цель запуска войн в плагине имеет элемент, который ведет по верному пути к войне. Я бы предпочел указать войну для развертывания, используя maven координаты, определенные нашим веб-модулем. Есть ли способ сделать это?

Это не тот плагин maven jetty, который предполагается использовать, плагин развертывает войну текущего модуля, то, что вы хотите сделать, по умолчанию не поддерживается.

Раздел 4.13 «Лучших сборок с Maven» описывает использование груза для развертывания войны, указанной с использованием координат maven,

Да, Cargo может сделать это чисто.

но это серьезное излишество, учитывая, что мы используем причал.

Я не согласен. Во-первых, плагин Jetty не поддерживает то, что вы хотите сделать из коробки (так что это может быть не тот инструмент). Во-вторых, серьезное превышение сильно преувеличено, на самом деле это неправильное представление, особенно если учесть, что для встроенной пристани для груза требуется очень небольшая конфигурация (ноль?).

Более разумно, что IMO использует зависимость: скопируйте, чтобы скопировать только что созданный и установленный военный артефакт по фиксированному пути в целевой директории модуля функциональных тестов

Без обид, но весь ваш вопрос звучит примерно так: У меня есть молоток, он был хорош для гвоздя, могу ли я использовать его для винта, учитывая, что получение отвертки кажется серьезным перебором? Чтобы ответить на этот вопрос (что-то, что вы говорите), вы можете использовать dependency:copy и заставить все это работать с плагином Maven Jetty, но это поделка (и так как вы на самом деле не задаете никаких вопросов, я думаю, вы хотели мнение по этому поводу). Конечно, окончательное решение принадлежит вам:)

На всякий случай, вот как я мог бы реализовать это с Cargo:

<dependencies>
  <dependency>
    <groupId>war group id</groupId>
    <artifactId>war artifact id</artifactId>
    <type>war</type>
    <version>war version</version>
  </dependency>
  ...
</dependencies>
...
<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.cargo</groupId>
      <artifactId>cargo-maven2-plugin</artifactId>
      <configuration>
        <!-- Container configuration -->
        <container>
          <containerId>jetty6x</containerId>
          <type>embedded</type>
        </container>
        <!-- Configuration to use with the container or the deployer -->
        <configuration>
          <deployables>
            <deployable>
              <groupId>war group id</groupId>
              <artifactId>war artifact id</artifactId>
              <type>war</type>
              <properties>
                <context>war context</context>
              </properties>
            </deployable>
          </deployables>
        </configuration>
        <!-- Don't wait, execute the tests after the container is started -->
        <wait>false</wait>
      </configuration>
      <executions>
        <execution>
          <id>start-container</id>
          <phase>pre-integration-test</phase>
          <goals>
            <goal>start</goal>
          </goals>
        </execution>
        <execution>
          <id>stop-container</id>
          <phase>post-integration-test</phase>
          <goals>
            <goal>stop</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
    ...
  </plugins>
  ...
</build>

И я не думаю, что это можно объективно квалифицировать как «серьезное излишество».

...