我在一个maven项目中有两组集成测试-自动和手动测试。手动测试很少,但很乏味-它们需要拔掉服务器等的插头。我想为手动测试创建一个单独的目标,因此我可以运行mvn manualtests
之类的东西来运行手动测试。如果您只是运行普通的Maven构建mvn install
左右,则应运行自动测试。
我已经用TestNG注释@Test(groups="manual"
注释了手动测试。现在的目标是具有surefire插件的两种配置,一种配置运行到与构建的测试阶段绑定(bind)的自动测试,另一种配置运行到与我想称为manualtests
的另一个自定义阶段绑定(bind)的手动测试。似乎不可能将插件的执行绑定(bind)到不存在的阶段(即maven未预定义的阶段)。是否无法定义自己的阶段?
最佳答案
这应该是可能的,尽管并不容易。第一步:看看默认情况下它是如何完成的。
使用此依赖项:
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
<version>${maven.version}</version>
</dependency>
获取源代码并查看META-INF/plexus中的components.xml。在那里,定义了默认阶段和默认生命周期/阶段绑定(bind)。
创建一个覆盖这些默认阶段(在其自己的components.xml中)和define it as an extension的插件
关于maven-2 - Maven-添加自定义阶段以使用其他配置执行插件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3127096/