我有一个使用私有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')
但我无法访问资源的绝对路径。
答案 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
}