Как запустить jetty: run-war, используя войну, определенную координатами maven?

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

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

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

способы:

  1. раздел 4.13 "лучшие сборки с Maven" описывает использование груза для развертывания войны, указанной с использованием координат maven, но это серьезный перебор, учитывая, что мы используем пристань.
  2. более разумная ИМО использует зависимость: копировать, чтобы скопировать только что построенный и установленный артефакт войны на фиксированный путь в целевой каталог модуля функциональных тестов, который я могу предоставить в плагине jetty <webApp> элемент конфигурации.

1 ответов


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

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

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

Да, груз может сделать это чистым способом.

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

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

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

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

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

<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>

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