扩展 Grails 插件的功能

Posted

技术标签:

【中文标题】扩展 Grails 插件的功能【英文标题】:Extending functionality of Grails Plugin 【发布时间】:2011-07-16 01:02:04 【问题描述】:

我想知道,是否有可能以及是否有通用方法来扩展 grails 插件的功能。

我最近安装了可评论插件,但需要对其进行一些修改。由于如果我修改代码不会与项目一起存储(而是在用户目录中),因此在更新插件(或安装其他机器上的项目)后,这些更改将丢失。

有人知道吗?

谢谢, 尼古拉斯

【问题讨论】:

【参考方案1】:

如果您想覆盖一个工件(例如域类),请在您的项目中创建一个具有相同名称的工件。插件与应用程序类分开编译,并且它们的工件首先注册,因此如果主应用程序中有工件,它将替换插件。只需确保对域类使用相同的包,尽管控制器或服务不需要这样做。

【讨论】:

【参考方案2】:

如果你想完全修改插件,你可以尝试改变然后重新编译插件,并将它构建成一个不同名称的zip文件。

然后您可以从源代码安装自定义插件。你可以参考question here.

【讨论】:

【参考方案3】:

在一个项目中,我们需要一个允许的电子邮件地址列表,允许应用程序向一个环境 (QA) 发送邮件,以便项目涉及的各个不同方可以在没有任何邮件风险的情况下测试应用程序发送给我们的客户客户(最终客户)。

更改所有发送邮件的代码块是一项太大的工作,因此我为邮件插件的核心类 (grails.plugin.mail.MailMessageBuilder) 实现了一个自定义扩展器,该扩展器获取允许的电子邮件列表应用程序配置中的地址并覆盖在发送邮件之前解析地址的方法(toDestinationAddresses)。然后,我替换了一个(插件的)工厂方法,它生成 MailMessageBuilders,因此它通过 Grails 引导程序中的 Groovy 元类生成了我的自定义构建器。

这是一个干净、非侵入性的修复程序,效果很好。

【讨论】:

以上是关于扩展 Grails 插件的功能的主要内容,如果未能解决你的问题,请参考以下文章

在 Grails 中对域实例进行版本控制以供批准

Grails插件bean的覆盖方法

带有 Vaadin 插件的 Grails,是正确的选择吗?

eclipse 和 netbeans 6.1 的 grails 插件

Grails 的用户管理插件/框架?

Grails 数据库迁移插件