IntelliJ 不会终止使用 gradle 构建的 Spring Boot 应用程序

我在Linux上使用IntelliJ 13.1,并尝试按照示例构建一个基本的REST应用程序 http://spring.io/guides/gs/spring-boot/

当我从IntelliJ中执行目标bootRun时,集成的tomcat服务器启动并且一切正常。

10:09:35: Executing external task 'bootRun'...
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:findMainClass
:bootRun

但是停止执行不会影响 gradle 任务:

10:11:40: External task execution finished 'bootRun'.

我仍然可以在配置的端口上访问 tomcat 实例。只有关闭 IntelliJ 才会破坏该进程。

我搜索了这个话题,但找不到任何合理的答案。我想知道它是否是一个

  • gradle 问题(使用 gradle 包装器版本 1.11)
  • Linux 问题 (Ubuntu 12.04)
  • IntelliJ problem (IDEA 13.1.2)
  • Spring Boot 问题(尝试了从 1.0.0.RELEASE 到 1.1.0.M2 的不同版本)

答案 1

我很确定这是一个IntelliJ问题,因为:

当您运行来自 IntelliJ 的 Gradle 集成,然后按 stop 时,应用程序将继续按照您的所述运行。bootRun

但是,如果您使用命令行并运行,然后使用 +,则应用程序会停止正常。gradle bootRunCntrlC

请注意,我的设置是Windows 7,IntelliJ 13.1.3,Gradle 1.12和Spring Boot 1.1.0.M2。

如果您需要的是能够轻松调试应用程序,那么您需要做的就是运行具有该方法的Java(或Groovy)类,因为它是运行Spring Boot应用程序的最简单方法!为此向Spring Boot致敬!!!main

当然,您可以继续使用 Gradle 执行运行所有测试或创建打包应用程序等任务。


答案 2

这可能不是完美的解决方案。但是对于快速修复,它会帮助你。

转到终端并应用此命令以终止进程

  sudo kill -9 `sudo lsof -t -i:8080`

注意:替换端口号而不是 8080


推荐