2011-02-03 8 views
6

私はGrailsのプラグインを基本的には、他のGrailsの他のプロジェクト(CSS、JSファイルなど)で使用される共有静的リソースのコンテナとして使用しています。プラグインを使用するというアイデアは、これらのことを共有することに過ぎませんでした。プラグインは本当に面白いことをしません。プラグイン内のリソースを直接参照する最良の方法は何ですか?カスタムのtaglibを作成するのではなく、ここに機能を追加していないからです。私は、プラグイン内のリソースにアクセスしたい - このようなもの、例えば、GSPからCSSファイルを参照する:Grails:インストールされたプラグインの中にあるリソースを参照するには?

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

このアイデアは、それの唯一の特定の側面があるべきプラグインの概念に違反してい露出され、残りはブラックボックスですか?関連するGrailsプロジェクト間で静的リソースを共有するための別のアプローチも歓迎します。これを試しても頭がおかしく、間違った方向に向いている場合に備えてです。 :)

答えて

3

まず、Grailsでは、プラグインはブラックボックスとはみなされません。反対に、すべてのコードが公開されています。本当にそれをブラックボックスにしたいのであれば、別のプラグインBinary Artifactsを使うべきです。

第2に、あなたのアプローチは非常に賢明です。

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

<g:resource>と同じようにそれを呼び出す:プラグインのリソースにアクセスするには、私のようなタグライブラリを作成しているだろう。そうすれば、プラグインのリソースパスを公開する必要はありません。 Nimble pluginはこのアプローチを使用しています。

また、Grailsプラグインとプロジェクト間の静的リソース依存関係の悪夢を処理しようとしているGrails Resources pluginを見ているかもしれません。私はそれを使ったことは一度もありませんが、次のGrailsプロジェクトでは、Grails 1.4に統合されます。

関連する問題