Добавьте тестовый путь к классу в Jetty, управляемый Cargo
Я хотел бы запустить Jetty с помощью Cargo, но я хотел бы добавить тестовые ресурсы в classpath Jetty.
Вот моя конфигурация Maven:
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.4.5</version>
<executions>
<execution>
<id>start-jetty</id>
<phase>pre-integration-test</phase>
<goals><goal>start</goal></goals>
<configuration>
<configuration>
<properties>
<cargo.jvmargs>${argLine}</cargo.jvmargs>
</properties>
</configuration>
</configuration>
</execution>
<execution>
<id>stop-jetty</id>
<phase>post-integration-test</phase>
<goals><goal>stop</goal></goals>
</execution>
</executions>
<configuration>
<container>
<containerId>jetty8x</containerId>
<type>embedded</type>
<log>${basedir}\target\cargo.log</log>
<output>${basedir}\target\jetty.log</output>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
</container>
<configuration>
<properties>
<cargo.servlet.port>8081</cargo.servlet.port>
<cargo.logging>high</cargo.logging>
<cargo.jvmargs>${argLine} -Denv=test</cargo.jvmargs>
</properties>
</configuration>
<deployables>
<deployable>
<pingURL>http://localhost:8081/myapp/</pingURL>
<pingTimeout>600000</pingTimeout>
<properties>
<context>myapp</context>
</properties>
</deployable>
</deployables>
</configuration>
</plugin>
Не используя Cargo, я использую useTestClasspath в своей конфигурации Jetty:
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.26</version>
<configuration>
<contextPath>myapp</contextPath>
<webAppSourceDirectory>WebContent</webAppSourceDirectory>
<stopPort>9699</stopPort>
<stopKey>foo</stopKey>
<scanIntervalSeconds>0</scanIntervalSeconds>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8081</port>
</connector>
</connectors>
<useTestClasspath>true</useTestClasspath>
<systemProperties>
<systemProperty>
<name>jettyMode</name>
<value>true</value>
</systemProperty>
</systemProperties>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.18</version>
</dependency>
</dependencies>
</plugin>
Есть ли способ настроить Cargo с помощью useTestClasspath? Благодарю.
1 ответ
Если я правильно понимаю ваш вопрос, то ваша проблема в том, что некоторые из ваших зависимостей находятся в <scope>test</scope>
и, следовательно, они не упакованы в ваш военный (или ушной) файл и не будут доступны в ваших интеграционных (или других) тестах при работе внутри контейнера.
Чтобы добиться такого поведения, вы можете добавить зависимость к определению контейнера так же, как вы добавили зависимость к mysql-connector-java, чего не хватает в вашей конфигурации, так это <type>
:
<container>
...
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<type>jar</type>
</dependency>
</dependencies>
</container>
Более того, artfactId и groupId этой зависимости должны преобразовываться в зависимость, которая уже определена в вашем pom (как зависимость). Смотрите здесь Cargo Maven2 Ссылка