java-IntelliJ不会终止使用grad构建的Spring Boot应用程序

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

当我从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问题(IDEA 13.1.2)
  • Spring Boot问题(尝试从1.0.0.RELEASE到1.1.0.M2的不同版本)
3个解决方案
20 votes

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

当您从IntelliJ的Gradle集成运行main,然后按Stop时,该应用程序将继续按照您提到的方式运行。

但是,如果使用命令行并运行main,然后使用Ctrl + C,则应用程序将停止运行。

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

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

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

geoand answered 2020-08-11T08:23:59Z
0 votes

我知道这个答案已经被回答了,但是由于这是在Google中进行搜索时的第一个主题,因此我想分享一个我尝试过的替代方法,但在我阅读的其他主题中却找不到。

这个build.gradle / pom.xml的主要问题是,我总是在类中进行某些更改,需要重新启动服务器,否则它将失败,因此有时需要compile('org.springframework.boot:spring-boot-devtools')服务器。

为了避免这种情况,我使用spring-boot-devtools。 基本上:

每当classpath上的文件更改时,使用spring-boot-devtools的应用程序将自动重启。

唯一要注意的是,如果单击compile('org.springframework.boot:spring-boot-devtools'),则在Intellij上仅显示build.gradle / pom.xml该项目,因此可以将其设置为自动生成,或者记得单击make

要使用,只需将依赖项添加到您的build.gradle / pom.xmlcompile('org.springframework.boot:spring-boot-devtools')

我发现这对开发非常有用。

Felipe S. answered 2020-08-11T08:24:46Z
0 votes

我在Mac中使用IntelliJ,运行Spring Boot应用程序却遇到了同样的问题。 每当我在终端中运行该应用程序并使用CTRL + Z时,该终端就会停止运行该应用程序。 但是,当我在同一终端上再次运行该应用程序时,会出现错误,指出端口8080正在使用中。我只是尝试了关闭终端会话的选项(右键单击->选择->关闭会话)。 这将关闭终端,当我再次单击终端选项并运行该应用程序时,它运行平稳。

Vijayakumar S answered 2020-08-11T08:25:08Z
translate from https://stackoverflow.com:/questions/24010282/intellij-does-not-terminate-spring-boot-applications-build-with-gradle