Инструменты разработчика 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-файл =

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

Другие вопросы по тегам