Пружинный ботинок с 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.