将Grails应用程序转换为插件,反之亦然

上周我和家人一起去伦敦度假,很幸运在我访问期间举行了伦敦GGUG聚会。 David Dawson讨论了将Grails应用程序重构为多个插件的过程(您可以在此处查看他的演讲视频)。 他提到的一件事是可以像独立应用程序一样运行插件的想法,因为Grails应用程序和插件的结构是如此相似,我认为研究将应用程序转换为插件或插件的过程会很有趣。应用程序插件。

我将在这里讨论的方法包括很多关于我喜欢如何创建应用程序和插件(即YMMV)的偏见。 我也不会进行部分转换,因为David在他的演讲中很好地阐述了这一点。

因此,要将应用程序转换为插件,一般的工作流程将类似于

  • 创建插件描述符FooGrailsPlugin.groovy。 最简单的方法是运行grails create-plugin pluginname并从那里复制生成的文件
  • application.properties删除所有内容,但app.grails.version属性除外
  • 如果lib目录中有可以在Maven存储库中使用的jar,请将其删除并替换为BuildConfig.groovy依赖项
  • 通过添加export = false来更改开发和测试所需的所有插件和jar依赖关系,但在不安装插件时将其更改为不导出
  • 如果您需要_Install.groovy_Uninstall.groovy_Upgrade.groovy脚本(您可能不需要),则从步骤1的虚拟插件中获取脚本(但删除_Upgrade.groovy脚本,它们都是可选的)
  • 如果您不使用它并且不依赖资源插件,请删除ApplicationResources.groovy
  • 将代码从BootStrap.groovy init()移至FooGrailsPlugin.doWithApplicationContext和/或FooGrailsPlugin.doWithDynamicMethods然后将destroy()移至FooGrailsPlugin.onShutdown,然后删除BootStrap.groovy
  • BuildConfig.groovyrelease插件添加依赖项
  • Config.groovy删除除log4j配置之外的所有内容
  • 除非已导出映射,否则请删除UrlMappings.groovy ; 只保留添加的
  • 将bean定义从resources.groovy移到FooGrailsPlugin.doWithSpring并删除resources.groovy
  • 除非添加了消息,否则删除grails-app/i18n消息捆绑文件; 只保留添加的
  • grails-app/views中删除所有您不使用的内容(尤其是error.gspindex.gsplayouts/main.gsp
  • 从您不使用的web-app中删除所有内容(包括WEB-INF xml和tld文件)
  • 现在将是编写您一直想要去做的那些测试的好时机
  • 创建一个或多个测试应用程序以将插件安装到其中,以确保它可以作为插件工作; 考虑编写脚本
  • 编写有关如何使用插件的文档; 至少需要一个README文件,但Grails gdoc文件会更好(运行grails doc --init即可开始使用)

将插件转换为应用程序是类似的,除了大部分相反:

    • 使用grails create-app appname创建虚拟应用程序以从中复制丢失的文件
      • BootStrap.groovyConfig.groovyUrlMappings.groovyApplicationResources.groovy移到grails-app/conf ,如果需要合并
      • resources.groovy移至grails-app/conf/spring
      • 将消息捆绑文件移动到grails-app/i18n ,如果需要合并
      • 将缺少的GSP移至grails-app/views
      • web-app移动静态资源
      • web-app/WEB-INF移动xml和tld文件
    • 将代码从FooGrailsPlugin.doWithApplicationContextFooGrailsPlugin.doWithDynamicMethods移至BootStrap.groovy init() ,并将代码从FooGrailsPlugin.onShutdown移至destroy()
    • 将Bean定义从FooGrailsPlugin.doWithSpring移到resources.groovy
    • 删除插件描述符
    • 恢复application.properties缺少的属性
    • 删除_Install.groovy_Uninstall.groovy_Upgrade.groovy脚本
    • BuildConfig.groovy删除release插件的依赖性
    • 现在是编写您一直想要去做的那些测试的好时机
    • 如果您在插件的doWithWebDescriptor进行更改,请运行grails install-templates并将其添加到src/templates/war/web.xml
    • 如果您添加自定义工件,或者在onChange和/或onConfigChange中支持开发环境代码或配置更改,则这些更改不能在应用程序中直接执行。 将pluginator插件用于这些应用程序,以及用于需要运行时逻辑的动态web.xml更改

我可能已经跳过了几个步骤,并且肯定省略了很多细节,但这应该涵盖每种转换类型的大部分过程。

参考资料:来自我们的JCG合作伙伴 Burt Beckwith在An Solipsists博客上的介绍, 将Grails应用程序转换为插件,反之亦然

翻译自: https://www.javacodegeeks.com/2013/07/converting-grails-applications-to-plugins-and-vice-versa.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值