2011-02-03 13 views
6

Tengo un plugin de Grails que estoy usando básicamente como un contenedor para algunos recursos estáticos compartidos que serán utilizados por varios otros proyectos de Grails en la empresa (CSS, archivos JS, etc.). La idea de utilizar un complemento fue solo para compartir estas cosas: el complemento realmente no hace nada más muy interesante. ¿Cuál es la mejor manera de referenciar directamente los recursos dentro del complemento? Preferiría no crear taglibs personalizados, ya que realmente no estoy agregando ninguna funcionalidad aquí; Sólo quiero el acceso a los recursos dentro del plug-in - algo así, por ejemplo, para hacer referencia a un archivo CSS de un SPG:Grails: ¿Cómo hacer referencia a un recurso ubicado dentro de un complemento instalado?

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

¿Este idea de violar el concepto de complementos, donde sólo algunos aspectos de la misma deben ser expuesto, y el resto es una caja negra? También son bienvenidos los enfoques alternativos para compartir recursos estáticos entre los proyectos relacionados de Grails, en caso de que me vaya por un camino loco y equivocado al intentar esto. :)

Respuesta

3

Primero, en Grails, un complemento no se considera una caja negra. Por el contrario, todo el código está expuesto; si realmente desea convertirlo en un recuadro negro, debe usar otro complemento, Binary Artifacts.

En segundo lugar, su enfoque es muy sensato. Para acceder a los recursos del plugin, habría creado una taglib como:

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

y lo llaman del mismo modo que <g:resource>. De esta forma, ni siquiera tiene que exponer la ruta de recursos de su plugin. El Nimble plugin está utilizando este enfoque.

También puede echar un vistazo a Grails Resources plugin, que está tratando de manejar la pesadilla de las dependencias de recursos estáticos entre los plugins y proyectos de Grails. Nunca lo he usado, pero seguro que en mi próximo proyecto de Grails lo integraré (por cierto, se incluirá en Grails 1.4).

Cuestiones relacionadas