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

标签 plugins grails resources

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

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

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

最佳答案

首先,在 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 项目中,我会集成它(顺便说一句,它将包含在 Grails 1.4 中)。

关于plugins - Grails:如何引用位于已安装插件中的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4890491/

相关文章:

android - 文件名.java :1 error ';' expected - Visual Studio Cordova Build with Android plugin

javascript - 使用 Grails findByAll() 数组进行 jQuery 自动完成

maven-2 - 如何在 IDE 中使用 Grails 依赖项

java - 启动外部 Activity 的无尽问题 - 找不到资源

url - 统一资源定位器和统一资源定位器是一回事吗?

javascript - 控制台日志 : Uncaught SecurityError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D' : The canvas has been tainted by cross-origin data

plugins - 无法理解 “' Window_sendPlatformMessage'(找不到4个参数)的Flutter Isolate解决方法”错误

grails - Grails-可搜索的插件:我可以阻止它仅依赖Lucene索引吗?

.net - 如何将 StringFormat 添加到 DataTemplate 内的 Textblock?

java - 打破自定义 block