【发布时间】:2012-08-28 14:03:56
【问题描述】:
是否可以在不编写插件的情况下自定义 maven 构建生命周期?我想自定义我的项目以在不运行测试的情况下对其进行打包,然后运行测试。背景是测试在 HTTPUnit 上运行,它需要一个完全构建的 Web 应用程序目录结构。
【问题讨论】:
标签: maven customization http-unit
是否可以在不编写插件的情况下自定义 maven 构建生命周期?我想自定义我的项目以在不运行测试的情况下对其进行打包,然后运行测试。背景是测试在 HTTPUnit 上运行,它需要一个完全构建的 Web 应用程序目录结构。
【问题讨论】:
标签: maven customization http-unit
根据 khmarbaise 的建议,您可以使用 maven-failsafe-plugin,它是 maven-surefire-plugin 的扩展。
Maven 生命周期有四个阶段非常适合您的意图:
pre-integration-test 用于设置集成测试
环境。 integration-test 用于运行集成测试。post-integration-test 用于拆除集成测试
环境。 verify 用于检查集成结果
测试。一般来说在pre-integration-testwe start the server期间
例如:
<executions>
[...]
<execution>
<id>start-jetty</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run-exploded</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>
我将此插件与Hudson 一起使用;在Maven Build Customization - Chapter 5 你可以找到更多的细节。
【讨论】:
您似乎正在编写集成测试。
您可以使用maven-failsafe-plugin。此插件默认在maven build lifecycle 的集成测试阶段(打包阶段之后)执行...
【讨论】:
出于这些目的,您需要专门用于此类事情的集成测试阶段。它在打包阶段之后但在安装/部署阶段之前。 这可以通过使用maven-failsafe-plugin 来实现。你可以找到一个完整的例子here。
【讨论】: