Spring.resources.static-locations не работает с инструментами разработчикаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Spring.resources.static-locations не работает с инструментами разработчика

Сообщение Anonymous »

У меня есть проект со следующей структурой (как и Spring.io):

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

├── frontend
│   ├── dist
│   |   ├── app.js
│   |   ├── vendor.js
│   |   ├── style.css
│   |   ├── index.html
│   ├── node_modules
│   ├── src
│   ├── package.json
│   ├── pom.xml
├── site
│   ├── src
│   ├── pom.xml

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

frontend
— это проект NodeJS, а сайт — это проект Spring Boot.

Все файлы внутри frontend/dist (включая html) автоматически генерируются веб-пакетом. Чтобы получить доступ
к ним из приложения Spring Boot, я настроил профиль разработки.

application.yml

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

spring:
profiles: development
resources:
static-locations:
- file:../frontend/dist/
Все работает отлично. Но когда я добавляю Spring-boot-devtools в путь к классам проекта сайта, я получаю 404 для любого файла внутри папки dist.

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

http://localhost:8080/ -> 404
http://localhost:8080/app.js -> 404
Опять же, нет инструментов разработчика — нет проблем.

Кроме того, если я заменяю static-locations на addResourceHandlers, это тоже работает (независимо от того, с инструментами разработчика или без них).

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

public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**")
.addResourceLocations("file:/full/path/to/frontend/dist/");
}
Это ошибка инструментов разработчика или моя вина?



ОБНОВЛЕНИЕ:

Хорошо, благодаря @AndyWilkinson, я выяснил причину проблемы. Я работаю в IntelliJ и использую конфигурации запуска для установки переменных env. Вот полученная командная строка:

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

/usr/lib/jvm/java-8-oracle/bin/java -bla-bla-bla -Didea.version=2017.1.3 -T 2 -Dspring.profiles.active=dev spring-boot:run
Но если devtools находится в пути к классам проекта, Spring Boot игнорирует их:

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

Could not find key 'spring.profiles.active' in any property source
No active profile set, falling back to default profiles: default
Теперь, если я просто удалю инструменты разработчика из pom.xml

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

The following profiles are active: dev
Activated profiles dev
... ух ты, это снова работает.

Возможный обходной путь — установить активный профиль непосредственно через application.yml.

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

spring:
profiles:
active: dev

---

spring:
profiles: dev
resources:
static-locations:
- file:../frontend/dist/
.. но мне это не нравится, потому что это неудобно.

Поскольку инструменты разработчика — это такая боль, я думаю, что предпочту использовать F5, как и раньше.

Подробнее здесь: https://stackoverflow.com/questions/446 ... h-devtools
Ответить

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

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

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

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

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