Как запустить причал: запуск войны с использованием войны, определенной координатами maven?

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

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

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

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

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

person cemerick    schedule 13.02.2010    source источник


Ответы (1)


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

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

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

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

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

Я не согласен. Во-первых, плагин jetty не поддерживает то, что вы хотите делать из коробки (так что это может быть неподходящий инструмент). Во-вторых, серьезное излишество сильно преувеличено, на самом деле это заблуждение, особенно с учетом того, что для груза требуется очень небольшая конфигурация (нулевая?) Для встроенной 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>

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

person Pascal Thivent    schedule 13.02.2010
comment
Комментарий о «серьезном излишестве» возник из-за того, что я изначально видел, что Cargo используется только в сочетании с Geronimo, который на тот момент я предположил, что это инструмент развертывания, а не контейнер веб-приложений (о котором я не слышал до вчерашнего дня, < i> пожать плечами). В любом случае, вы определенно правы, груз был подходящим вариантом, а конфигурация плагина, которую вы поделили выше, была на 99% того, что мне было нужно. Спасибо за помощь и разъяснения. - person cemerick; 14.02.2010
comment
@Chas Нет проблем. Я просто рад, что тогда я прояснил этот момент. Удачи. - person Pascal Thivent; 15.02.2010