Как остановить казнь Maven
У меня есть фиктивный сервер, который мне нужно запустить в Jenkins до запуска моих тестов автоматизации, а затем остановить фиктивный сервер после того, как мои тесты будут запущены.
Этот фиктивный сервер является проектом Maven и использует exec-maven-plugin
, Я могу запустить этот сервер, выполнив команду mvn exec:java
, Однако я не могу остановить этот проект через Дженкинса. Я читал об этом, и большинство ответов говорят, чтобы найти идентификатор процесса этого проекта Maven, а затем убить его. Есть ли более чистый и простой способ остановить этот проект?
2 ответа
Вы должны начать и остановить свой сервер, используя цели, которые являются частью жизненного цикла 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. Рассмотреть возможность использования exec:exec
вместо этого с асинхронным. Вы увидите, что asyncDestroyOnShutdown по умолчанию имеет значение true, что означает, что он отключится после завершения работы Maven.