访问Private Grails Plugin web-app中的资源

时间:2014-03-17 19:56:23

标签: file grails plugins private

我有一个使用私有Grails插件mySearch的主grails应用程序。 插件搜索在Search \ web-app \ filters.json中有一个文件。

使用run-app运行应用程序时:可以使用以下命令访问ressource文件:

def ressource = new File( org.codehaus.groovy.grails.plugins.GrailsPluginUtils.getPluginDirForName('mySearch')?.file?.absolutePath
+"/web-app/filters.json").text

但是当在tomcat7中部署应用程序时它不起作用。

我已尝试使用pluginManager.getGrailsPlugin('mySearch')

但我无法访问资源的绝对路径。

1 个答案:

答案 0 :(得分:0)

经过多次尝试解决后,我发现了这种解决方法。 它看起来很乱,但我没有发现任何其他更短更甜的东西:

// work only for a plugin installed in app deployed from a war.
String getRessourceFile(String relativePath) throws FileNotFoundException{ 

    def pluginDir = pluginManager.getGrailsPlugin('MyPlugin')?.getPluginPath()
    def pluginFileSystemName = pluginManager.getGrailsPlugin('MyPlugin')?.getFileSystemName()

    def basedir = grailsApplication.parentContext.getResource("/")?.file
    if(basedir.toString().endsWith("web-app")){
        basedir = basedir.parent
    }

    ressourcefile = "$basedir$pluginDir/$relativePath"
    ressource = new File(ressourcefile)?.text
}