Как на самом деле использовать JAWR с библиотекой из CDN
Мы используем JAWR для обслуживания контента, но хотели бы также использовать CDN для распространения скриптов. Например, чтобы использовать jQuery, мы имеем:
jawr.js.bundle.jquery.id=/bundles/jquery.js
jawr.js.bundle.jquery.mappings=/js/lib/.license,/js/lib/jquery-1.8.2.js
jawr.js.bundle.jquery.productionURL=http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js
Это прекрасно работает. Мы получаем локальную библиотеку в режиме отладки, а библиотеку CDN - в производственном режиме. Однако давайте добавим:
jawr.js.bundle.bootstrap.id=/bundles/bootstrap.js
jawr.js.bundle.bootstrap.mappings=/js/lib/bootstrap-2.1.0/js/.license,/js/lib/bootstrap-2.1.0/js/bootstrap.js
jawr.js.bundle.bootstrap.dependencies=jquery
Теперь при доступе (не при запуске) страницы с помощью /bundles/bootstrap.js
JAWR бросает неприятное исключение:
java.lang.IllegalStateException: The bundleDataHashCode must be set before accessing the url prefix.
at net.jawr.web.resource.bundle.JoinableResourceBundleImpl.getURLPrefix(JoinableResourceBundleImpl.java:560)
...
at net.jawr.web.taglib.AbstractResourceBundleTag.doStartTag(AbstractResourceBundleTag.java:68)
...
Означает ли это, что я не могу зависеть от пакета с productionURL
?
1 ответ
На JAWR есть открытый вопрос по этому поводу и ветка (без ответов) на форуме. Ответ (от меня) на данный момент:
Ты можешь использовать
productionURL
, но не зависят от этих связок. Все, что нарушается, это механизм зависимости. Вручную добавив все необходимое<jawr:.../>
теги работает.