如何在Grails插件中更新主项目的配置
解决该问题的环境:Grails2.1
在Grails插件中更新主项目的配置,主要面临几个小问题:
- 在什么地方改?
- 如何引用插件的资源?
- 如何引用主项目的资源?
- 如何修改主项目的配置?
1)在什么地方改?
建议的地方包括,插件的_Install.groovy或者自定义的脚本,如:UpdateConfig.groovy
2)如何引用插件的资源?
对于这一点,有两种方案,如果在_Install.groovy中引用,可以通过诸如:
"${pluginBasedir}/src/templates/_frontpage.gsp"
注意这里的"pluginBasedir"这个预定义变量
如果在自定义脚本中引用插件资源,则pluginBasedir已失效了,必须通过${pluginName}PluginDir这个变量来引用,如:
"${ext3scaffoldingPluginDir}/src/templates/_frontpage.gsp"
具体可以参考Grails2.1.0pdf文档的246页
3)如何引用主项目的资源?
这个问题比较简单,通过${basedir}项目即可,如:
config=new File("$basedir/grails-app/conf/Config.groovy")
4)如何修改主项目的配置?
这个问题可以自由发挥,主要通过正则表达式,或者字符串操作来进行
范例:
动态在Config.groovy配置文件中插入json.date的配置
includeTargets << grailsScript("Init") target(main: "Update the main project config file") { config=new File("$basedir/grails-app/conf/Config.groovy") if(config.text.contains("grails.converters.json.date = 'javascript'")==false) { config << """ //3lifestone modify start grails.converters.json.date = 'javascript' //3lifestone modify end """ event("StatusUpdate", [ "the main project config is updated"]) }else{ event("StatusUpdate", [ "the main project config is already updated"]) } } setDefaultTarget(main)
相关推荐
hooopo 2014-07-12
80447518 2014-06-18
purpen 2014-05-23
jackyzhuyuanlu 2015-02-12
龙浩然 2015-11-06
daociyiyou 2016-11-07
coderbx 2013-03-11
yehell 2012-04-24
yeyedeyatou 2011-08-04
Ben的程序员生涯 2011-04-29
jieren 2010-02-18
carpenterworm 2009-04-03
trapeze 2008-06-06
掘井之路 2019-07-01