Spring-boot-devtools Автоматический перезапуск не работаетJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Spring-boot-devtools Автоматический перезапуск не работает

Сообщение Anonymous »

У меня есть работающее приложение Spring Boot 2.25, созданное с помощью mvn. В соответствии с этой документацией я добавляю

Код: Выделить всё


org.springframework.boot
spring-boot-devtools
true


Из документации:

Поскольку DevTools отслеживает ресурсы пути к классам, единственный способ вызвать перезагрузку — обновить путь к классам. Способ обновления пути к классам зависит от используемой IDE. В Eclipse сохранение измененного файла приводит к обновлению пути к классам и запуску перезапуска. В IntelliJ IDEA сборка проекта (Build -> Build Project) дает тот же эффект.

При работающем приложении я попробовал простой

Код: Выделить всё

touch /path/to/app.jar
ожидает перезапуска приложения, но ничего не происходит.
Хорошо, возможно, оно делает что-то умнее. Я изменил исходный .java, перекомпилировал .jar и cp заменил работающий .jar-файл, и... ничего не произошло.
Также из документации

DevTools использует перехватчик завершения работы контекста приложения, чтобы закрыть его во время перезапуска. Это не работает корректно, если вы отключили перехватчик завершения работы (SpringApplication.setRegisterShutdownHook(false)).

Я этого не делаю.

DevTools необходимо настроить ResourceLoader, используемый ApplicationContext. Если ваше приложение уже предоставляет его, оно будет обернуто. Прямое переопределение метода getResource в ApplicationContext не поддерживается.

Я этого не делаю.
Я я запускаю это в контейнере Docker, если это имеет значение. Из документации:

Инструменты разработчика автоматически отключаются при запуске полностью упакованного приложения. Если ваше приложение запускается из java -jar или из специального загрузчика классов, то оно считается «рабочим приложением». Если это к вам не относится (т. е. если вы запускаете приложение из контейнера), рассмотрите возможность исключения инструментов разработчика или установите системное свойство -Dspring.devtools.restart.enabled=false.

Я не понимаю, что это значит и актуально ли это.
Я хочу перекомпилировать .jar и заменить его в работающем контейнере Docker, вызвать и перезапуск приложения без перезапуск контейнера. Как я могу это сделать?
РЕДАКТИРОВАТЬ: я использую mvn, чтобы перестроить jar, затем docker cp, чтобы заменить его в работающем контейнере. (IntelliJ IDEA утверждает, что пересобирает проект, но файлы jar на самом деле не затрагиваются, но это уже другая история.) Я ищу решение, не связанное с IDE.

Подробнее здесь: https://stackoverflow.com/questions/671 ... ot-working
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»