Я делаю то же самое, Джон, но я использовал другой подход с плагином Jetty. Я думаю, что конечный результат тот же. Я разрабатываю набор интеграционных тестов для работы с несколькими WAR-файлами веб-сервисов. Я использую dependency:copy
в фазе package
, а затем список <contextHandler/>
s настроен для maven-jetty-plugin
:
<project>
…
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-wars</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/wars-to-be-tested</outputDirectory>
<stripVersion>true</stripVersion>
<artifactItems>
…
<artifactItem>
<groupId>groupId</groupId>
<artifactId>artifactId</artifactId>
<version>version</version>
<type>war</type>
</artifactItem>
…
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>7.1.3.v20100526</version>
<configuration>
…
<contextHandlers>
…
<contextHandler implementation="org.mortbay.jetty.plugin.JettyWebAppContext">
<war>${project.build.directory}/wars-to-be-tested/artifactId.war</war>
<contextPath>/context</contextPath>
</contextHandler>
</contextHandlers>
</configuration>
<executions>
<execution>
<id>start-jetty</id>
<phase>pre-integration-test</phase>
<goals>
<goal>stop</goal>
<goal>run</goal>
</goals>
<configuration>
<scanIntervalSeconds>0</scanIntervalSeconds>
<daemon>true</daemon>
</configuration>
</execution>
<execution>
<id>stop-jetty</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Я бы предпочел объявить различные войны как зависимости, а затем использовать dependency:copy-dependencies
для настройки каталога wars-to-be-tested
; это позволило бы реактору Maven выяснить, что ему нужно построить мой модуль тестирования интеграции после войн, которые он будет тестировать. Проблема, с которой я столкнулся, заключалась в том, что плагин Jetty думал, что я хочу «наложить» все войны, которые были перечислены как зависимости (концепция, о которой я даже не слышал, пока не увидел, что это произошло); Я не знаю, повредило ли бы это случиться, но мне это не понравилось, поэтому я выбрал метод dependency:copy
.
Это просто альтернатива использованию Cargo. Я сам разберусь с этим, но я просто хотел предложить другой способ сделать это.