Grails 2.4不会从/ opt中读取配置文件

时间:2015-10-26 15:54:55

标签: grails grails-plugin

请注意:虽然我使用Grails Shiro plugin但我认为这是Grails的核心问题,与插件无关。

Mac(Yosemtie)和Grails 2.4.5。这是我Config.groovy的前两行:

String configFileAbsPath = System.getProperty('configFileAbsPath')
grails.config.locations = [ "file:${configFileAbsPath}" ]

因此,要在本地运行,我会执行以下操作:

grails -DconfigFileAbsPath=/Users/myuser/tmp/myapp.properties run-app

当我运行这个确切的调用时,我的应用程序启动并且表现得很好。

但是,在非本地环境中,我希望我的配置文件位于/opt/myapp/myapp.properties下。因此,在我的本地计算机上,我创建了一个/opt/myapp目录,然后运行chmod -R 777 /opt/myapp。然后我将myapp.properties复制到它并运行:

grails -DconfigFileAbsPath=/opt/myapp/myapp.properties run-app

这会产生以下堆栈跟踪:

| Error Error generating web.xml file (NOTE: Stack trace has been filtered. Use --verbose to see entire trace.)
groovy.lang.MissingPropertyException: No such property: shiro for class: java.lang.String
    at ShiroGrailsPlugin$_closure4_closure30_closure34.doCall(ShiroGrailsPlugin.groovy:248)
    at ShiroGrailsPlugin$_closure4_closure30_closure34.doCall(ShiroGrailsPlugin.groovy)
    at ShiroGrailsPlugin$_closure4_closure30.doCall(ShiroGrailsPlugin.groovy:243)
    at ShiroGrailsPlugin$_closure4_closure30.doCall(ShiroGrailsPlugin.groovy)
    at ShiroGrailsPlugin$_closure4.doCall(ShiroGrailsPlugin.groovy:242)

我严重怀疑外部配置文件的位置,或配置文件(或其父目录)上设置的文件权限会破坏Grails Shiro插件。我认为这只是一个误导Grails / Groovy例外。很可能某种安全异常导致某些内容无法正确加载/填充(并且无声地失败),然后当Grails Shiro在run-app期间启动时,它丢失的东西应该存在并导致{{1}死了。

有关正在发生的事情或修复内容的任何想法?

更新:在调用run-app之前运行grails cleangrails clean-all和/或grails refresh-dependencies也无法帮助/解决此错误。< / p>

1 个答案:

答案 0 :(得分:1)

我通常更喜欢将.groovy文件用于外部配置而不是.properties,因为我可以将printlns写入其中以检查文件是否已加载。