我有一个模拟服务器,我需要在运行我的自动化测试之前在 Jenkins 中启动它,然后在我的测试运行后停止模拟服务器。
这个模拟服务器是一个 Maven 项目,正在使用exec-maven-plugin
. 我可以通过运行命令来启动这个服务器mvn exec:java
。但是我无法通过 Jenkins 停止这个 Maven 项目。我已经阅读过它,大多数答案都告诉我要找到这个 Maven 项目的进程 ID,然后将其杀死。有没有更干净、更简单的方法来停止这个项目?
我有一个模拟服务器,我需要在运行我的自动化测试之前在 Jenkins 中启动它,然后在我的测试运行后停止模拟服务器。
这个模拟服务器是一个 Maven 项目,正在使用exec-maven-plugin
. 我可以通过运行命令来启动这个服务器mvn exec:java
。但是我无法通过 Jenkins 停止这个 Maven 项目。我已经阅读过它,大多数答案都告诉我要找到这个 Maven 项目的进程 ID,然后将其杀死。有没有更干净、更简单的方法来停止这个项目?
您需要使用作为 Maven 生命周期一部分的目标来启动和停止服务器。
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<id>tomcat-run</id>
<goals>
<goal>run-war-only</goal>
</goals>
<phase>pre-integration-test</phase>
<configuration>
<fork>true</fork>
</configuration>
</execution>
<execution>
<id>tomcat-shutdown</id>
<goals>
<goal>shutdown</goal>
</goals>
<phase>post-integration-test</phase>
</execution>
</executions>
</plugin>
如果你运行的是 linux:
ps aux |grep <project-name>
接着kill -9 <process id>
这个问题的关键确实是你不知道processId。考虑使用asyncexec:exec
代替。您会看到asyncDestroyOnShutdown默认设置为 true,这意味着一旦 Maven 关闭,它就会关闭。