我想编写一个可用于集成测试的插件。为简单起见,我们假设它是一个简单的MOJO:
@Mojo(name = "test", defaultPhase = LifecyclePhase.INTEGRATION_TEST)
public class IntegrationTestPlugin extends AbstractMojo {
public void execute() {
...
}
}
可以从另一个项目中调用此插件:
<plugin>
<groupId>my.group.id</groupId>
<artifactId>my.artifact.id</artifactId>
<executions>
<execution>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
这会让我的生活更轻松,因为我只是在不编写任何额外代码的情况下执行插件。为了给出一个想法,插件可以例如在产生本地Web容器,数据库......之后检查GET http://localhost:8080/<some endpoint>
是否返回200,如项目所示。
我需要一个名称遵循约定(**/IT*.java, **/*IT.java or **/*ITCase.java
)的类,但是在这种情况下如何发现和执行这些类?这与Mojo的execute()
有什么关系?
简单地将SomeTestIT.java
放在插件项目的src/main/test/...
中(而不是在执行插件的项目中,就像没有插件时那样)不会起作用。我一直坚持如何继续。
这将如何工作以及Mojo类中的execute()
应该是什么样的?
答案 0 :(得分:0)
当您继承AbstractMojo
时,除其他外,您必须覆盖getDefaultIncludes()
返回要包含的ant路径样式值:
@Override
protected String[] getDefaultIncludes() {
return new String[]{ "**/IT*.java", "**/*IT.java", "**/*ITCase.java"};
}
您应该从用于在Maven中执行集成测试的github上提供的maven-failsafe-plugin
源代码中汲取灵感。