Пружинный ботинок с Jawr не работает

Я пытаюсь интегрировать загрузку Spring с jawr, но получаю ошибку ниже:

njwrbrAbstractBundleLinkRenderer: Пакет не найден для пути: /bundles/dependency.css njwrbrAbstractBundleLinkRenderer: Пакет не найден для пути: /bundles/app.css njwrbrAbstractBundleLinkRenderer: Пакет не найден для пути: /

У меня есть эти файлы в моей статической папке:

Структура папок моего проекта

Что происходит?

мой файл index.ftl.

введите описание изображения здесь

1 ответ

Решение

Вы проверили, генерируются ли ваши пакеты в вашем временном каталоге. Например, в Windows вы можете найти временный каталог, как правило:

C:\Users\<username>\AppData\Local\Temp\tomcat.<random numbers>.8080\work\Tomcat\localhost\<context path>\jawrTmp

Я обнаружил, что поскольку это jar-файл вашего здания, а не старые военные файлы mvc с каталогом webapp, вам нужно использовать генератор classpath:

https://j-a-w-r.github.io/docs/generators.html

Префикс - это ключ, который вы будете указывать при реализации генератора, а путь - это строка, которая будет иметь разное значение в зависимости от функциональности вашего генератора. Кроме того, у вас есть параметры в скобках и в скобках (оба из которых являются необязательными), которые дополнительно помогают в параметризации сопоставлений. Простой пример отображения без параметров выглядит следующим образом:

jawr.js.bundle.one.mappings=jar:net/jawr/cpscript.js

Будьте осторожны, потому что я сам лично не заметил этот самородок:

В отличие от обычного сопоставления, этот способ ссылки на ресурсы пока не позволяет использовать подстановочные знаки (то есть: jar:/com/mycompany/myapp/** не будет работать).

Так как он не будет рекурсивно проходить через каталоги, мне пришлось вручную добавить их все в свойства jawr.properties.

Некоторая дополнительная информация

После этого я заметил, что .sorting файлы будут добавлены к содержимому пакета (и по какой-то забавной причине я не мог понять, почему некоторые сопоставления удваиваются с /jar:<mapping>; который процессор MinJS, чтобы полностью сойти с ума.

Так что я лично не мог найти способ обойти это, поэтому я создал собственный PostProcessor и PreProcessor. Препроцессор проходит через каждое из отображений и исправляет /jar:<mapping> значение для jar:<mapping> и заполняет статический список с содержимым .sorting файл.

Затем PostProcessor удаляет из содержимого пакета любые ссылки на значения, содержащиеся в этом статическом списке (что решило эту проблему). По-прежнему возникают проблемы, когда я могу http в комплекте с префиксом context-path/jsb/bundles но мои приложения не поднимаются до сих пор /bundles поэтому не уверен, что у меня самого была проблема.

Короче говоря, потому что у вас есть jar, вы должны загружать контент через classpath, а не через сервлет (который, по моему мнению, по умолчанию ищет).

Надеюсь, это поможет, если вам все-таки удастся заставить все это функционировать, пожалуйста, поделитесь здесь, так как очень мало документации по Spring-boot jar и jawr.

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