从grails 2.3.8 2.4升级时出现资源插件错误

Shr*_*r R 5 grails

我跟随文档尝试将我的项目从2.3.8升级到2.4,但我遇到了这些错误

localhost-startStop-1] ERROR resource.ResourceProcessor  - Unable to load resources
Message: No signature of method: groovy.util.ConfigObject.getGrailsPlugin() is applicable    
for argument types: (java.lang.String) values: [lesscss-resources]


->>    5 | run                   in BootstrapResources
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|     46 | doCall                in org.grails.plugin.resource.module.ModuleDeclarationsFactory$_getModuleDeclarations_closure2
|     41 | getModuleDeclarations in org.grails.plugin.resource.module.ModuleDeclarationsFactory
|    715 | loadModules           in org.grails.plugin.resource.ResourceProcessor
|   1013 | reloadAll . . . . . . in     ''
|    166 | doCall                in ResourcesGrailsPlugin$_closure3
|    262 | run . . . . . . . . . in java.util.concurrent.FutureTask
|   1145 | runWorker             in java.util.concurrent.ThreadPoolExecutor
|    615 | run . . . . . . . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^    744 | run                   in java.lang.Thread
Error |
2014-06-03 13:38:16,282 [localhost-startStop-1] ERROR [localhost].   [/DocumentManagementSystem]  - Exception starting filter sitemesh
Message: org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter
Line | Method
->>   59 | findClass in org.grails.plugins.tomcat.ParentDelegatingClassLoader
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    425 | loadClass in java.lang.ClassLoader
|    358 | loadClass in     ''
|    262 | run       in java.util.concurrent.FutureTask
|   1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
|    615 | run       in java.util.concurrent.ThreadPoolExecutor$Worker
^    744 | run . . . in java.lang.Thread
Error |
2014-06-03 13:38:16,300 [localhost-startStop-1] ERROR core.StandardContext  - Error     filterStart
Error |
Run Code Online (Sandbox Code Playgroud)

这听起来像插件问题吗?或者我可能在文档中跳过的内容

这是我的buildconfig插件部分

plugins {
    // plugins for the build system only
    build ":tomcat8:8.0.5"

    // plugins for the compile step
    compile ":scaffolding:2.1.0"
    compile ':cache:1.1.6'
//      compile ":mail:1.0.5"
//      compile ":ckeditor:4.4.0.0-SNAPSHOT"
    compile ":searchable:0.6.7"
    compile ":jquery:1.11.1"
//      compile ":shiro:1.2.1"
//      compile ":resources:1.2.8"
    compile ':asset-pipeline:1.8.3'
//      compile (":nimble:0.7"){
//          
//          exclude "servlet-api"
//          
//          }

    // plugins needed at runtime but not for compilation
    runtime ":hibernate:3.6.10.15" // or ":hibernate4:4.3.5.1"
    runtime ":database-migration:1.4.0"
    runtime ":jquery:1.11.1"
    runtime ":resources:1.2.8"
Run Code Online (Sandbox Code Playgroud)

新的sitemesh错误

Error |
2014-06-03 14:41:32,304 [localhost-startStop-1] ERROR [localhost].[/DocumentManagementSystem]  - Exception starting filter sitemesh
Message: org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter
Line | Method
->>   61 | findClass in org.grails.plugins.tomcat.ParentDelegatingClassLoader
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    425 | loadClass in java.lang.ClassLoader
|    358 | loadClass in     ''
|    262 | run       in java.util.concurrent.FutureTask
|   1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
|    615 | run       in java.util.concurrent.ThreadPoolExecutor$Worker
^    744 | run . . . in java.lang.Thread
Error |
Run Code Online (Sandbox Code Playgroud)

Nic*_*her 6

您的web.xml可能仍包含对sitemesh过滤器的引用:

http://grails.org/doc/2.4.3/guide/upgradingFrom23.html

Sitemesh servlet过滤器已被删除,GSP布局功能现在由GrailsLayoutView处理.

将src/templates文件夹重命名为src/templates-old,然后运行grails install-templates.如果您之前自定义了web.xml,则需要编辑生成的web.xml以再次进行这些更改.


Lrr*_*rrr 2

正如文档中所说,您不再需要使用资源插件:

As of Grails 2.4 the resources plugin has been replaced with the asset-pipeline
Run Code Online (Sandbox Code Playgroud)

现在你可以使用资源插件来代替。使用此链接,您可以轻松地将资源从 2.3.8 升级到 2.4。

  • 错误的解释。对于版本 2.4.0 的新 Grails 应用程序,默认情况下您会获得 asset-pipeline。这并不意味着如果您在 2.3.8 中使用资源插件,则不能在 2.4.0 中再使用它。 (6认同)
  • 这并没有直接解决OP面临的问题,这是一个建议,我同意。 (3认同)