Инструменты разработчика Spring Boot Автоматический перезапуск не работает в IntelliJ

Недавно запустил spring-boot с spring-boot-devtools в IntelliJ и потратил пару часов, пытаясь понять, почему IntelliJ не улавливает мои изменения и автоматически не перезапускает встроенный tomcat.

Не помогла и информация по этой ссылке: https://dzone.com/articles/spring-boot-application-live-reload-hot-swap-with


person Samir Shaik    schedule 01.12.2018    source источник


Ответы (2)


Чтобы заставить его работать, вам необходимо:

1) Включить devtools в maven или gradle. В мавене это выглядит так:

    <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, затем введите «registry» и щелкните по нему. Затем включите параметр «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...

person Harald    schedule 11.05.2020
comment
отлично, но кажется, что у него есть фиксированное время для перезапуска, а не при внесении изменений. - person MonirRouissi; 22.06.2021

Проблема была решена путем изменения названия проекта с spring-boot на spring-boot-xxx (практически все, кроме spring-boot).

Если вы внимательно прочитаете документацию, вот что упоминается:

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

Сборка проекта с помощью Ctrl+F9 автоматически запускает перезагрузку. Если вы хотите автоматически срабатывать, как только файл класса будет сохранен, вы можете перейти по ссылке горячей замены, указанной в вопросе.

Spring Boot также имеет возможность запускать перезагрузку при изменении определенного файла, и это можно настроить в application.properties, используя следующее свойство.

spring.devtools.restart.trigger-file=

Надеюсь, это поможет кому-то сэкономить время.

person Samir Shaik    schedule 01.12.2018