java - 在 Maven 多模块项目的测试阶段之前启动 Jetty

标签 java maven jetty overlays

我在多模块 Maven 项目(比如说 foo-web)中有一个 WAR 模块,它实现了一个 Web 服务。然后我有一个 foo-cli,它实现了一个 Web 服务客户端并在几个单元测试中对其进行了测试。

为了使其正常工作,我在测试阶段之前启动 Jetty:

<dependency>
  <groupId>${project.groupId}</groupId>
  <artifactId>foo-web</artifactId>
  <version>${project.version}</version>
  <type>war</type>
  <scope>test</scope>
</dependency>         
...
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.5.v20120716</version>
   <configuration>

     <scanIntervalSeconds>10</scanIntervalSeconds>
     <useTestScope>true</useTestScope>
     <connectors>
       <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
         <port>8080</port>
         <maxIdleTime>60000</maxIdleTime>
       </connector>
     </connectors>
   </configuration>

<executions>
    <execution>
      <id>start-jetty</id>
      <phase>process-test-classes</phase>
      <goals>
        <goal>run</goal>
      </goals>
      <configuration>
        <scanIntervalSeconds>0</scanIntervalSeconds>
        <daemon>true</daemon>
      </configuration>
    </execution>
   </executions>          
</plugin>

当我从 foo-cli 模块中运行“mvn test”时,它运行得非常好(它甚至会自动停止,无需指定任何其他内容)。但是,当我尝试转到上层(foo)并从那里发出“mvn test”时,即我尝试对项目中的所有模块运行所有测试时,它会失败并显示“404 - 未找到”。从输出中,我可以看到覆盖( war 依赖)似乎完全被忽略了。

预先感谢您的帮助。

最佳答案

您应该尝试将集成测试移至顶级项目。这样它将在 WAR Artifact 构建后运行。

你看过Maven Failsafe Plugin吗? ?它是为您正在做的事情而设计的,这实际上是集成测试而不是单元测试。该页面提供了一些关于为什么您可能希望使用integration-test阶段进行集成测试的好建议。

也就是说,它描述了为什么您可能希望在 pre-integration-test 等期间执行 start-jetty 操作,以便您可以适本地将其全部拆除。

关于java - 在 Maven 多模块项目的测试阶段之前启动 Jetty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12784407/

相关文章:

java - Jetty:将 SSL 连接器配置为仅服务于特定资源

java - 链接列表的 get 方法不起作用...不兼容的类型

java - HTTP GET 响应解析错误(空字符串?) - 但正文不为空

JAVA如何存储mysql登录信息

java - 未找到类定义 : org/glassfish/hk2/ComponentException

java - 使用maven部署到weblogic 11g

java - 在用 Java 读入时如何将输入流通过管道传输到压缩文件?

maven - 在 Maven 中构建 Angular 2 项目

java - Activity 目录服务设置

java - Jetty 9 HTTP客户端: How to get the request content?