我有以下脚本
#!/bin/bash
cd ../../../configuration-service
mvn -e -X spring-boot:stop &>log.log &
用于停止 SpringBoot 应用程序,这是整个应用程序(单个 java 文件)
@EnableConfigServer
@SpringBootApplication
public class ConfigurationServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigurationServiceApplication.class, args);
}
}
并且脚本失败并出现以下错误:
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.4.2:stop (default-cli) on project configuration-service: Spring application lifecycle JMX bean not found (fork is null). Could not stop application gracefully: org.springframework.boot:type=Admin,name=SpringApplication -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.4.2:stop (default-cli) on project configuration-service: Spring application lifecycle JMX bean not found (fork is null). Could not stop application gracefully
请告诉我如何停止这个 Spring Boot 应用程序。我需要从另一个 Spring Boot 应用程序(从另一个微服务)终止此服务
我已经尝试过
mvn -e -X spring-boot:stop &>log.log &
期待 SpringBoot 应用程序优雅停止
我最近在遗留应用程序的 CI/CD 管道中遇到了类似的问题。
您使用的是哪个版本的 Spring Boot?此解决方案适用于3.0.0以下版本。根本原因是
spring-boot-maven-plugin:2.7.18
和
fork
目标之间的 spring-boot:start
参数不匹配:
null
参数添加到命令中:
-Dspring-boot.stop.fork=true
根据您的 pom.xml 以及您使用插件的方式,您还可以考虑将
mvn -e -X spring-boot:stop -Dspring-boot.stop.fork=true &>log.log &
添加到您的插件配置中,以便在执行目标之间保持一致,例如:
<fork>true</fork>
另请参阅此 GitHub 问题:spring-boot:stop 的默认 fork 值不一致