7

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

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

有人有什么想法吗?

谢谢,尼古拉斯

4

3 回答 3

9

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

于 2011-03-15T20:57:54.193 回答
4

如果您想完全修改插件,您可以尝试更改然后重新编译插件,并将其构建为不同名称的 zip 文件。

然后您可以从源代码安装自定义插件。你可以参考这里的问题。

于 2011-03-16T07:43:04.770 回答
-1

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

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

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

于 2012-09-07T08:07:28.707 回答