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)
Ответы
Ответ 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 использовался. Я только что попробовал вариант закрыть сеанс терминала (щелкните правой кнопкой мыши → выберите → Закрыть сеанс). Это закроет терминал, и когда я снова щелкнул опцию терминала и запустил приложение, оно работало гладко.