Grails 2.2.1没有读取插件配置文件

时间:2013-03-28 00:57:13

标签: grails upgrade config

我有一个使用Grails 2.1.1构建的应用程序和插件,我升级到2.2.1并且遇到了一个奇怪的问题。我的应用程序开始爆炸,因为我的应用Config.groovy中定义的配置值突然解析为groovy.Util.ConfigObject而不是实际值。这是问题的第1部分,第2部分是在我的应用程序中,我在我的应用程序Config.groovy中定义

grails.config.defaults.locations = [
    "classpath:DemoPluginConfig.groovy",
]

DemoPluginConfig.groovy包含此属性

oo.memcached.timeout=400000

并且DemoPluginConfig.groovy文件位于我的Demo插件的src/java文件夹中。 我有一个memcache服务,我试图在服务准备好后设置超时属性:

def void afterPropertiesSet() {

        ConnectionFactoryBuilder cfb = new ConnectionFactoryBuilder()
        def config = grailsApplication.config;
        def operationTimeOut = config.oo.memcached.timeout
        cfb.setOpTimeout(timeOut)

    }

grails run-app此时出现错误:

Caused by MissingMethodException: No signature of method: net.spy.memcached.ConnectionFactoryBuilder.setOpTimeout() is applicable for argument types: (groovy.util.ConfigObject) values: [[:]]
Possible solutions: setOpTimeout(long)
->>   55 | unwrap                          in org.codehaus.groovy.runtime.ScriptBytecodeAdapter
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|     46 | call                            in org.codehaus.groovy.runtime.callsite.PojoMetaClassSite
|     45 | defaultCall . . . . . . . . . . in org.codehaus.groovy.runtime.callsite.CallSiteArray
|    108 | call                            in org.codehaus.groovy.runtime.callsite.AbstractCallSite
|    116 | call . . . . . . . . . . . . .  in     ''
|     20 | afterPropertiesSet              in com.millennialmedia.ui.core.MemcachedService
|   1514 | invokeInitMethods . . . . . . . in org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory
|   1452 | initializeBean                  in     ''
|    519 | doCreateBean . . . . . . . . .  in     ''
|    122 | doCreateBean                    in org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableBeanFactory
|    456 | createBean . . . . . . . . . .  in org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory
|    271 | resolveInnerBean                in org.springframework.beans.factory.support.BeanDefinitionValueResolver
|    126 | resolveValueIfNecessary . . . . in     ''
|   1360 | applyPropertyValues             in org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory
|   1118 | populateBean . . . . . . . . .  in     ''

如果我尝试运行grails run-app几次成功启动但是应用程序在加载带有另一个groovy.Util.ConfigObject的页面时爆炸是不可序列化的错误。在应用程序爆炸之前逐步调试显示,当我们到达setOptTimeOut行时,grailsApplication.config仅包含来自我的应用程序的Config.groovy的配置选项,就好像来自插件的值{{ 1}}被忽略了。

恢复到2.1.1会使一切恢复正常。在这一点上,我不知道在哪里看。

2 个答案:

答案 0 :(得分:0)

您不应该使用operationTimeOut而不是<{1}}

timeOut

答案 1 :(得分:0)

尝试将您的Groovy配置放在 grails-app / conf 中,而不是 src / java 。然后,看看您是否可以在一致的基础上重现错误。

如果全部失败, grails clean 可能会占上风。

希望有所帮助