Подтвердить что ты не робот

IntelliJ не завершает работу Spring Создание загрузочных приложений с помощью gradle

Я использую IntelliJ 13.1 в Linux и пытаюсь создать базовое приложение REST по примеру http://spring.io/guides/gs/spring-boot/

Когда я запускаю целевой bootRun из IntelliJ, запущен интегрированный сервер 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 Проблема с загрузкой (попробовал разные версии от 1.0.0.RELEASE до 1.1.0.M2)
4b9b3361

Ответ 1

Я уверен, что это проблема IntelliJ, потому что:

Когда вы запускаете интеграцию bootRun из IntelliJ Gradle, а затем нажмите "Стоп", приложение продолжает работать, как вы упомянули.

Однако, если вы используете командную строку и запускаете gradle bootRun, а затем используете Cntrl + C, приложение перестает быть точным.

Обратите внимание, что моя настройка - Windows 7, IntelliJ 13.1.3, Gradle 1.12 и Spring Boot 1.1.0.M2.

Если вам нужно легко отлаживать приложение, все, что вам нужно сделать, это запустить класс Java (или Groovy), который имеет метод main, так как это самый простой способ запуска Spring Загрузочные приложения! Престижность к Spring Загрузка для этого!!!

Конечно, вы можете продолжать использовать Gradle для таких задач, как запуск всех тестов или создание упакованного приложения.

Ответ 2

Я знаю, что на этот ответ уже был дан ответ, но поскольку это первая тема при поиске в Google, я подумал о том, чтобы поделиться альтернативой, с которой я пошел, и не нашел в других темах, которые я читал.

Моя основная проблема с этим terminate заключалась в том, что я всегда что-то менял в своих классах, мне нужно было перезапустить сервер, и он потерпел неудачу, поэтому мне иногда нужно было stop/start сервер.

Чтобы этого избежать, я использую spring -boot-devtools. В основном:

Приложения, которые используют spring -boot-devtools, будут автоматически перезагружаться всякий раз, когда будут изменены файлы на пути к классам.

Единственным уловом является то, что в Intellij это только makes проект, если нажать Build > Make Project, поэтому либо установите его для автоматической сборки, либо не забудьте нажать make.

Чтобы использовать, просто добавьте зависимость к вашему build.gradle / pom.xml: compile('org.springframework.boot:spring-boot-devtools')

Я нашел, что это действительно полезно в разработке.

Ответ 3

Я использую IntelliJ в Mac, запуск весеннего загрузочного приложения давал ту же проблему. Всякий раз, когда я запускаю приложение в Терминале и использую CTRL + Z, терминал перестает запускать приложение. Но когда я снова запускаю приложение в том же терминале, выдает ошибку о том, что порт 8080 использовался. Я только что попробовал вариант закрыть сеанс терминала (щелкните правой кнопкой мыши → выберите → Закрыть сеанс). Это закроет терминал, и когда я снова щелкнул опцию терминала и запустил приложение, оно работало гладко.