Grails:如何引用已安装插件中的资源?

时间:2011-02-03 19:04:25

标签: plugins grails resources

我有一个Grails插件,我使用它作为一些共享静态资源的容器,将由内部的各种其他Grails项目(CSS,JS文件等)使用。使用插件的想法只是为了分享这些东西 - 插件并没有真正做任何其他非常有趣的事情。直接引用插件内资源的最佳方法是什么?我宁愿不创建自定义标记库,因为我实际上并没有在这里添加任何功能;我只想访问插件中的资源 - 例如,从GSP引用CSS文件:

<g:link rel="stylesheet" url="${resource(dir:'css', file:'mycss.css',
plugin:'myplugin')}"/>

这个想法是否违反了插件的概念,其中只有暴露的某些方面,其余部分是黑盒子?在相关的Grails项目之间共享静态资源的替代方法也是受欢迎的,以防我试图通过这种方式走向疯狂,错误的道路。 :)

1 个答案:

答案 0 :(得分:3)

首先,在Grails中,插件不被视为黑盒子。相反,所有代码都暴露出来;如果你真的想把它变成一个黑盒子,那么你应该使用另一个插件Binary Artifacts

其次,你的方法非常明智。要访问插件资源,我会创建一个像:

这样的标记库
def res = { attrs -> 
  attrs.dir=pluginContextPath
  //Do whatever you want here
  out << g.resource(attrs) 
}

并以与<g:resource>相同的方式调用它。这样,您甚至不必公开插件的资源路径。 Nimble plugin正在使用这种方法。

你也可以看一下Grails Resources plugin,它试图处理Grails插件和项目中静态资源依赖的噩梦。我从来没有使用它,但在我的下一个Grails项目中肯定会集成它(BTW,它将包含在Grails 1.4中)。