CTRL + C w/Spring Boot&Gradle Kills Gradle Daemon

McN*_*nja 15 java tomcat gradle spring-boot

我使用Spring Boot Gradle插件启动Tomcat服务器和我的应用程序.我通过启动Tomcat服务器gradle bootRun.我还启用了Gradle守护进程,希望能让Gradle构建更快.

但是,启用守护进程是徒劳的.每次我通过Ctrl+ 停止服务器C,然后再次启动服务器gradle bootRun,我遇到消息:

Starting a new Gradle Daemon for this build (subsequent builds will be faster).
Run Code Online (Sandbox Code Playgroud)

Ctrl+ C不仅会在Spring Boot的封面下停止Tomcat服务器,还会杀死Gradle守护程序.这违背了Gradle的守护进程模式的目的.

有没有更好的方法我应该停止服务器,希望通过我启动tomcat的同一终端中的命令行界面gradle bootRun,使Gradle守护程序保持活动状态?

Jac*_*own 5

这仍然是Gradle 4中的一个问题.我最好的妥协/解决方案(建立charlie_pl的答案):

  1. ctrl+z将发送进程发送到后台.
  2. 杀死这个过程: kill $(ps aux | grep "MyApp" | grep -v grep | awk '{print $2}')
  3. 重新开始: ./gradlew run ...


Lip*_*ang 2

Ctrl这是核心开发人员对为什么+C会杀死守护进程的解释。

\n
\n

“设计上”一直都是这样,但我们希望摆脱它,这样守护进程就不会被频繁杀死。我认为在某些情况下我们不会传播 ctrl+c,但那是运气。

\n

如果你看看我们在 2.5 中为连续模式所做的事情,我们将添加 ctrl+d 来退出 Gradle 进程而不杀死守护进程。我们的 Play 应用程序支持 (playRun) 遇到了与 bootRun 类似的问题,它使用相同的机制 (ctrl+d)。我认为我们最终会做这样的事情,但我们需要为现有的构建脚本提供一种替代方法,以便在我们一直捕获输入之前读取标准输入。

\n
\n

\xe2\x80\x94 Sterling Greene(Gradle 核心开发)

\n