我想知道,如果有可能,并且有一种通用方法来扩展grails插件的功能。
我最近安装了可评论的插件,但需要对其进行一些修改。由于代码不与项目一起存储(但在用户目录中),如果我修改它,在插件更新后(或安装其他机器的项目)这些更改将丢失。
有人有任何想法吗?
谢谢, 尼古拉斯
答案 0 :(得分:9)
如果要覆盖工件(例如域类),请在项目中创建一个具有相同名称的工件。插件与应用程序类分开编译,并且首先注册它们的工件,因此如果主应用程序中存在工件,它将替换插件。请确保对域类使用相同的包,但控制器或服务不需要这样。
答案 1 :(得分:4)
如果要完全修改插件,可以尝试更改然后重新编译插件,并将其构建为具有不同名称的zip文件。
然后您可以从源代码安装customize-plugin。您可以参考question here.
答案 2 :(得分:-1)
在一个项目中,我们需要一个允许的电子邮件地址列表,允许应用程序向一个环境(QA)发送邮件,以便项目中涉及的各种各方可以测试应用程序而不会有任何邮件风险被发送给我们的客户(最终客户)。
更改所有执行邮件的代码块是一项太大的工作,因此我为mail-plugin(grails.plugin.mail.MailMessageBuilder)的核心类实现了一个自定义扩展程序,该类包含了允许的电子邮件列表来自应用程序配置的地址,并覆盖在发送邮件之前解析地址的方法(toDestinationAddresses)。然后我替换了一个工厂方法(插件),它生成MailMessageBuilders,因此它通过Grails bootstrap中的Groovy metaClass生成我的自定义构建器。
这是一个干净,非侵入性的修复程序,它运行良好。