Как остановить казнь 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.

Другие вопросы по тегам