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

Posted

技术标签:

【中文标题】Grails:如何引用位于已安装插件中的资源?【英文标题】:Grails: How to reference a resource located inside an installed plugin? 【发布时间】:2011-06-20 21:38:32 【问题描述】:

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

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

这个想法是否违反了插件的概念,即只应该暴露它的某些方面,其余的都是一个黑匣子?也欢迎在相关 Grails 项目之间共享静态资源的替代方法,以防我在尝试此操作时走上一条疯狂、错误的道路。 :)

【问题讨论】:

【参考方案1】:

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

其次,您的方法非常明智。要访问插件资源,我会创建一个标记库,例如:

def res =  attrs -> 
  attrs.dir=pluginContextPath
  //Do whatever you want here
  out << g.resource(attrs) 

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

您还可以查看Grails Resources plugin,它正在尝试处理 Grails 插件和项目之间静态资源依赖的噩梦。我从未使用过它,但可以肯定的是,在我的下一个 Grails 项目中,我会集成它(顺便说一句,它将包含在 Grails 1.4 中)。

【讨论】:

以上是关于Grails:如何引用位于已安装插件中的资源?的主要内容,如果未能解决你的问题,请参考以下文章

Grails Plugin 获取插件的根目录或安装目录

CSS 文件中的 URL 被 Grails 资源插件 1.2.7 破坏

如何从源代码安装 Grails 插件?

从 zip 文件安装 grails 插件的正确方法是啥?

如何设置 grails 插件的安装位置?

如何通过 Maven pom.xml 安装 Grails 插件?