如何访问Grails插件的application.properties中的值?

时间:2014-05-16 18:31:13

标签: grails grails-plugin

我可以使用grailsApplication.metadata[key]从应用程序的application.properties中获取值,但我很难为加载的Grails插件获取相同内容。

我已尝试过grailsApplication.mainContext.getBean('pluginManager').allPlugins,但该列表中的实例并未包含插件中的值' applications.properties文件。

我也试过了GrailsPluginUtils.getMetadataForPlugin(pluginName),但这并没有从applications.properties返回值。 (事实上​​,我通常会得到null。)

有没有办法在运行时获取这些值?

2 个答案:

答案 0 :(得分:1)

@Michael回答确实可以做得更好。在需要的位置添加def grailsApplication,然后使用app.myprp等内容访问您的媒体资源${grailsApplication.metadata.'app.myprp'}

答案 1 :(得分:0)

我不喜欢这样作为答案,所以我希望有人仍能指出我正确的方向。

由于我无法找到获取插件元数据的方法,因此我手动阅读了插件application.properties文件(https://stackoverflow.com/a/20872275/489597之后):

import org.codehaus.groovy.grails.plugins.GrailsPluginUtils

GrailsPluginUtils.getPluginDirectories().collect {
    Properties properties = new Properties()
    File propertiesFile = new File("${it.getPath()}/application.properties")
    propertiesFile.withInputStream {
        properties.load(it)
    }
    properties
}

我已经向我指出,这不会在打包的WAR中工作,因为application.properties文件不会存在,除非他们被复制到WEB- INF。