Контекст
У меня есть проект Vaadin Flow Spring Boot, использующий Vaadin 14 в режиме совместимости, который упакован в виде исполняемого файла .war с использованием Gradle (то есть с плагином Gradle war
). У меня есть ресурсы c, которые находятся в src/main/webapp/frontend/styles
. Я пока использую режим разработки. Из-за других ограничений я не могу отключить режим совместимости в обозримом будущем.
Я знаю, что эта страница советует использовать src/main/resources/META-INF/resources
для проектов Spring, но это, вероятно, потому, что Spring По умолчанию при загрузке используется макет .jar. Для макетов .war stati c ресурсы должны go в (подпапках) src/main/webapp
.
Создание файла .war с использованием gradle, а затем его запуск вне IDE (IntelliJ IDEA), все в порядке .
Проблема
Запуск службы Spring Boot в IntelliJ IDEA, stati c ресурсы из src/main/webapp
не найдены. Все запросы возвращают 404 с аналогичным сообщением:
Could not navigate to 'frontend/styles/images/logo.png'
Reason: Couldn't find route for 'frontend/styles/images/logo.png'
Available routes:
. <root>
. ... (listing routes for all my application views)
This detailed message is only shown when running in development mode.
Вещи, которые я пробовал для отладки этого
Я попытался разместить некоторые ресурсы непосредственно в src/main/webapp
, потому что я знаю, что Ваадин делает специальные вещи с папкой frontend
, но они дают ту же ошибку.
Если я изменю файл сборки, чтобы использовать макет jar
, и переместить файлы в src/main/resources
, все в порядке. К сожалению, из-за других ограничений мне нужно сохранить макет war
.
Я создал простое приложение Spring Boot, отличное от Vaadin, с макетом war
, и у него нет проблем с обслуживанием stati c ресурсы из src / main / webapp при запуске внутри Intellij IDEA. Похоже, Ваадин не понимает, что я запрашиваю ресурс stati c вместо маршрута, возможно потому, что он не понимает, что используется макет war
.