是否可以在不编写插件的情况下自定义maven构建生命周期?我想自定义我的项目来打包它而不运行测试,然后运行测试。背景是测试在HTTPUnit上运行,它需要一个完全构造的Web应用程序目录结构。
答案 0 :(得分:3)
根据khmarbaise的建议,您可以使用maven-failsafe-plugin,这是maven-surefire-plugin的扩展。
Maven生命周期有四个阶段,非常适合您的意图:
pre-integration-test
用于设置集成测试
环境。 integration-test
用于运行集成测试。post-integration-test
用于拆除集成测试
环境。 verify
用于检查集成的结果
测试一般来说,在pre-integration-test
we 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 中,您可以找到更多详细信息。
答案 1 :(得分:1)
您似乎正在编写集成测试。
您可以使用maven-failsafe-plugin。默认情况下,此插件在maven build lifecycle的集成测试阶段执行(在打包阶段之后)...
答案 2 :(得分:1)
出于这些目的,您需要完全针对此类事情的集成测试阶段。它是在打包阶段之后但在安装/部署阶段之前。 这可以通过使用maven-failsafe-plugin来实现。您可以找到完整的示例here。