由于我正在尝试在我的maven项目中设置一个嵌入式容器,我希望它在集成测试阶段运行。我有一些无法解决的码头问题:
<daemon>true</daemon>
没有预期的效果。服务器运行但是它锁定了构建过程(事实上它阻止了单元测试)。 那么我应该在哪里进行配置? <useTestClasspath>true</useTestClasspath>
对我来说是一个谜。我不想使用src/main/webapp/WEB-INF/lib
放置postgresql jar(由jetty为数据源(postegresql-driver)调用),因为它将嵌入到应用程序中,我不希望它是在战争中(客户端)。所以我想使用<useTestClasspath>true</useTestClasspath>
,但是当我将postgresql放在src/test/resources
中时,它找不到/识别它。 那么,我该如何使用该属性? 以下是完整的插件配置:
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.9</version>
<executions>
<execution>
<id>start-jetty</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run-war</goal>
</goals>
<configuration>
<useTestClasspath>true</useTestClasspath>
<daemon>true</daemon>
<contextPath>agepro-prototype</contextPath>
<webApp>
${project.build.directory}/agepro-prototype.war
</webApp>
</configuration>
</execution>
<execution>
<id>stop-jetty</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
<configuration>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>9091</port>
</connector>
</connectors>
<stopPort>9092</stopPort>
<stopKey>test</stopKey>
</configuration>
</plugin>
提前感谢您提供的帮助。我必须为我的语法道歉,因为我的英语非常糟糕
问候,
Depado
答案 0 :(得分:1)
不确定您的第一个问题,但是对于您的第二个问题,请在主依赖关系块中指定postgresql jar作为提供范围(这将阻止它在战争中捆绑),并在jetty中添加一个额外的依赖块插件定义(带编译范围),这将使jetgtime运行时可以使用postgresql jar:
<build>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.9</version>
<executions>
<execution>
<id>start-jetty</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run-war</goal>
</goals>
<configuration>
<daemon>true</daemon>
<contextPath>agepro-prototype</contextPath>
<webApp>
${project.build.directory}/agepro-prototype.war
</webApp>
</configuration>
</execution>
<execution>
<id>stop-jetty</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
<configuration>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>9091</port>
</connector>
</connectors>
<stopPort>9092</stopPort>
<stopKey>test</stopKey>
</configuration>
<dependencies>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901-1.jdbc4</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901-1.jdbc4</version>
<scope>provided</scope>
</dependency>
</dependencies>
我不想使用src / main / webapp / WEB-INF / lib来放置postgresql jar(由jetty为数据源(postegresql-driver)调用)因为它将被嵌入到应用程序中我不希望它在战争中(客户端)。所以我想使用true但是当我将postgresql放在src / test / resources中时它找不到/识别它
你不应该将jar放在任何文件夹(src / main / resources或src / main / webapp / WEB-INF / classes)中,它们都应该被定义为pom中的依赖项。
我还想象在定义webApp配置元素时会忽略useTestClasspath,因为它使用的是打包的war,它不包含测试资源/类
答案 1 :(得分:0)
useTestClasspath / useTestScope仅适用于jetty:run
这就是为什么它不适用于码头:战争和其他码头:目标