Инструменты разработчика Spring Boot Автоматический перезапуск в IntelliJ не работает
Недавно я запустил spring-boot с spring-boot-devtools в IntelliJ и потратил пару часов, пытаясь выяснить, почему IntelliJ не принимает мои изменения и автоматически перезапускает встроенный tomcat.
Информация по этой ссылке тоже не помогла: https://dzone.com/articles/spring-boot-application-live-reload-hot-swap-with
1 ответ
Чтобы он заработал, вам необходимо:
1) Включите инструменты разработчика в maven или gradle. В maven это выглядит так:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope><!-- -->
<optional>true</optional>
</dependency>
2) В IntellijIDEA: зайдите в настройки (ctrl +alt+s) -> Сборка, Выполнение, Развертывание -> компилятор, отметьте "Создавать проект автоматически"
3) В IntellijIDEA: нажмите ctrl+shift+a, затем введите "реестр" и щелкните по нему. Затем включите опцию compiler.automake.allow.when.app.running.
4) ПЕРЕЗАГРУЗИТЕ intellijIDEA!! Я потерял несколько часов из-за этого:/
Теперь он должен работать.
Обратите внимание:
-Вам не нужны дополнительные пути или триггерный файл, чтобы это работало должным образом.
-Если вы используете параметр запуска maven -Dspring-boot.run.fork=false
чтобы включить отладку, инструменты разработчика отключены, поэтому он не должен перезагружаться при изменении кода.
-в файле yaml вам нужно использовать кавычки для параметров, поступающих из pom. Если вы этого не сделаете, проект запустится в первый раз, а затем завершится ошибкой при перезагрузке.
spring:
profiles:
active: '@spring.profiles.active@'
ЭТО РАБОТАЕТ С INTELLIJIDEA COMMUNITY EDITION, оно того стоит, поскольку многие ответы говорят, что он работает только с Ultimate...
Проблема была решена путем изменения названия проекта с spring-boot на spring-boot-xxx (в основном это не что иное, как spring-boot).
Если вы внимательно прочитаете документацию, вот что здесь упоминается:
При принятии решения о том, должна ли запись в classpath вызывать перезапуск при ее изменении, DevTools автоматически игнорирует проекты с именами spring-boot, spring-boot-devtools, spring-boot-autoconfigure, spring-boot-activator и spring-boot-starter.
Сборка проекта с использованием Ctrl+F9 автоматически вызывает перезапуск. Если вы хотите выполнить автоматический запуск сразу после сохранения файла класса, перейдите по ссылке горячей замены, указанной в вопросе.
Spring Boot также имеет возможность инициировать перезапуск при изменении определенного файла, который можно настроить в application.properties, используя следующее свойство
spring.devtools.restart.trigger-файл =
Надеюсь, это поможет кому-то сэкономить время.