生产部署上的 Grails 2.5.3 NPE(资产管道)

Grails 2.5.3 NPE on production deployment (assets-pipeline)

当我尝试访问我的应用程序的登录页面时,我得到了以下堆栈跟踪:

    21.03.2016 19:01:52,746: (HVK3) GrailsExceptionResolver: NullPointerException occurred when processing request: [GET] /wmp-hvk3-development/login/auth
Stacktrace follows:
org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error processing GroovyPageView: null
        at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:198)
        at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)
        at grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.java:53)
        at grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.java:62)
        at grails.plugin.springsecurity.web.SecurityRequestHolderFilter.doFilter(SecurityRequestHolderFilter.java:59)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
Caused by: java.lang.NullPointerException
        at java.util.Hashtable.hash(Hashtable.java:262)
        at java.util.Hashtable.get(Hashtable.java:459)
        at java.util.Properties.getProperty(Properties.java:951)
        at asset.pipeline.grails.AssetProcessorService.getResolvedAssetPath(AssetProcessorService.groovy:57)
        at asset.pipeline.grails.AssetProcessorService.asset(AssetProcessorService.groovy:72)
        at asset.pipeline.grails.CachingLinkGenerator.asset(CachingLinkGenerator.groovy:32)
        at asset.pipeline.grails.CachingLinkGenerator.resource(CachingLinkGenerator.groovy:24)
        at gsp_wmpHvk3Development_loginauth_gsp$_run_closure2.doCall(gsp_wmpHvk3Development_loginauth_gsp.groovy:67)

应用程序在本地工作站上 test environment 中完美运行,但当我部署到生产环境时会出现此堆栈跟踪。

我不知道该怎么做,我猜资产管道资产路径有问题,因为 AssetProcessorService.groovy:57 指出:

我在 RedHat linux 运行 tomcat 7 上 java 1.7 assets pipeline 2.7.2 插件作为 compile 依赖和 spring 安全核心插件 2.0.0 compile 时间依赖性。

这是由于 BuildConfig 中缺少配置造成的。我在文件末尾添加了以下内容并修复了这个问题:

// This closure is passed the command line arguments used to start the war process.
    grails.war.copyToWebApp = { args ->
        fileset(dir: "web-app") {
            include(name: "js/**")
            include(name: "css/**")
            include(name: "WEB-INF/**")
        }
    }