我有一个模拟服务器,在运行自动化测试之前,我需要在詹金斯(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>
这个问题的关键确实是您不知道ProcessID。考虑与异步使用exec:exec
。您会看到,默认情况下,Asyncdestroyonshutdown设置为true,这意味着一旦Maven关闭,它将关闭。
如果您正在运行Linux:
ps aux |grep <project-name>
,然后 kill -9 <process id>