Java 如何向maven failsafe插件添加集成前和集成后阶段
我有一个netty应用程序服务器需要在集成前测试阶段启动,并在集成后测试阶段停止,以便进行集成测试。我使用了Java 如何向maven failsafe插件添加集成前和集成后阶段,java,maven,integration-testing,pom.xml,maven-failsafe-plugin,Java,Maven,Integration Testing,Pom.xml,Maven Failsafe Plugin,我有一个netty应用程序服务器需要在集成前测试阶段启动,并在集成后测试阶段停止,以便进行集成测试。我使用了maven故障保护插件。但是我不知道在预集成测试阶段执行主类,以及在执行之后如何停止服务器。我的主类也位于项目的子模块中。我已经创建了一个概要文件,用于在父pom中运行IntegrationTest <profile> <id>integration-tests</id> <activation>
maven故障保护插件
。但是我不知道在预集成测试阶段执行主类,以及在执行之后如何停止服务器。我的主类也位于项目的子模块中。我已经创建了一个概要文件,用于在父pom中运行IntegrationTest
<profile>
<id>integration-tests</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<modules>
<module>application_module1</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14.1</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>src/it/java</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-resource</id>
<phase>generate-sources</phase>
<goals>
<goal>add-test-resource</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/it/resources</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<includes>
<include>**/*IT.java</include>
</includes>
</configuration>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
集成测试
假的
应用程序模块1
org.apache.maven.plugins
maven surefire插件
2.14.1
真的
org.codehaus.mojo
构建助手maven插件
1.9.1
添加源
生成源
添加测试源
src/it/java
添加资源
生成源
添加测试资源
src/it/resources
org.apache.maven.plugins
maven故障保护插件
2.19.1
**/*IT.java
集成测试
验证
这是一个有趣的问题,因为它类似于我最近提出的关于用计算机做同样事情的问题
根据@Tunaki给我的建议,并且根据我的研究,我不认为有一种简单的方法可以让maven failsafe插件
启动服务器启动过程,而无需定制/分叉failsafe插件代码本身(我不推荐)
也许更好的选择是像我为我的postgres嵌入式服务需求所做的那样:创建一个新的、相当简单的插件来初始化netty服务。参考@Tunaki的选择
基于@Tunaki的建议,并遵循这一相当容易遵循的指南,我创建了一个小型Java(Maven插件)项目,该项目包括:
- 插件pom(使用maven插件3.4构建插件)
- 我的java服务类,包含启动、维护服务器进程状态和停止服务器进程的代码
- 两个Mojo(Java类)用于启动进程,一个用于停止进程,注释如下:
@Mojo(name=“startpostgres”,defaultPhase=LifecyclePhase.PRE_INTEGRATION_TEST) 公共类StartPostgresMojo扩展了AbstractMojo<groupId>my.group.id</groupId> <artifactId>postgres-maven-plugin</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>maven-plugin</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <build> <plugins> <plugin> <artifactId>maven-plugin-plugin</artifactId> <version>3.4</version> </plugin> </plugins> </build>
<groupId>my.group.id</groupId>
<artifactId>postgres-maven-plugin</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>maven-plugin</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<artifactId>maven-plugin-plugin</artifactId>
<version>3.4</version>
</plugin>
</plugins>
</build>
my.group.id
并尝试添加您自己对netty app server的支持,因为这不是当前支持的货物集装箱的支持