Плагин ресурсов с кешированными ресурсами

Grails 2.3.7 и подключаемый модуль кэшированных ресурсов, по крайней мере, с ресурсами lesscss, не работают должным образом.

Кэшированный плагин возвращает ошибку, аналогичную описанной в этой теме:

<dt>Class</dt><dd>java.lang.NullPointerException</dd><dt>Message</dt><dd>Cannot invoke method cache() on null object</dd></dl><h2>Around line 31 of <span class="filename">grails-app/resourceMappers/org/grails/plugin/cachedresources/HashAndCacheResourceMapper.groovy</span></h2>
<pre class="snippet"><code class="line"><span class="lineNumber">28:</span> if (log.debugEnabled) {</code><code class="line"><span class="lineNumber">29:</span> log.debug &quot;Setting caching headers on ${req.requestURI

http://grails.1312388.n4.nabble.com/Grails-resources-bug-Unable-to-load-resources-at-startup-td4652307.html

Проблема в том, что cacheHeadersService не внедряется или не имеет значения null в плагине cacheheaders.

Пытаясь решить эту проблему, я скопировал содержимое cached-resources-plugin 1.1 из target/work/plugins в локальную папку и добавил следующую строку:

grails.plugin.location.'cached-resources' = "../grailsplugins/cached-resources-1.1"

Намерение состояло в том, чтобы исправить эту ошибку самостоятельно.

Однако, как ни странно, при локальном использовании плагина проблема с внедрением cacheHeadersService исчезла!

Как плагин может работать по-разному при локальном использовании и при обычной установке?

Возможно, это проблема с загрузчиком, когда теперь плагин cache-resources-plugin загружается после того, что объявляет службу, но, тем не менее, стоит сообщить об этом.

В файле dependencies.groovy плагина cache-resources объявляется зависимость:

compile ":cache-headers:1.0.4"

но, очевидно, он не загружается перед плагином, если только он не загружается из локального каталога, странно!

Мне также интересно, так как плагин cache-resources объявляет зависимость от tomcat :

 build(":tomcat:$grailsVersion",
              ":release:2.0.3",
              ":rest-client-builder:1.0.2") {
            export = false
        }

является ли кот требованием? При попытке перейти на Jetty в основном приложении процесс сборки завершается сбоем, говоря, что tomcat не может быть найден в репозитории.

build  ":jetty:2.0.3"// ":tomcat:7.0.52.1"

Я только что нашел эти похожие вопросы:

Плагин кэшированных ресурсов не работает? Ресурсы Grails Cache не работают Ресурс не найден в приложении Grails с подключаемыми модулями кеша


person Samson    schedule 12.05.2014    source источник
comment
кешированные ресурсы не зависят от tomcat. Обратите внимание на строку export=false. Это здесь просто для облегчения запуска интеграции и функциональных тестов в самом плагине. Также вы уверены, что версия, которую вы клонировали из github, является версией, которая была опубликована. т. е. были ли внесены изменения, чтобы исправить это, просто не опубликованное на сайте grails.org/plugins.   -  person davydotcom    schedule 13.05.2014
comment
@davydotcom Нет, я использую плагин из репозитория, а не из github. Возможно, мне нужно проверить эту версию и попробовать :)   -  person Samson    schedule 13.05.2014