我在一个 Maven 项目中有两组集成测试 - 自动测试和手动测试。手动测试很少但很乏味 - 它们需要拔掉服务器的插头等。我想为手动测试创建一个单独的目标,这样我就可以运行诸如 mvn manualtests
之类的东西来运行手动测试。如果您只是运行普通的 Maven 构建 mvn install
左右,则应该运行自动测试。
我已经使用 TestNG 注释 @Test(groups="manual"
注释了手动测试。现在的目标是拥有 Surefire 插件的两种配置,一种运行自动测试绑定(bind)到构建的测试阶段,并且运行手动测试,该测试绑定(bind)到另一个自定义阶段,我想将其称为 manualtests
。似乎无法绑定(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/