首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

Grails 2.0 脚手架在 STS 上的默认覆盖修改

2012-08-30 
Grails 2.0 脚手架在 STS 下的默认覆盖修改默认情况下,当使用Grails脚手架再次生成标准Controller和GSP文

Grails 2.0 脚手架在 STS 下的默认覆盖修改
默认情况下,当使用Grails脚手架再次生成标准Controller和GSP文件时,会提示一个类似
“文件×××已经存在,是否覆盖”的提示,1.3.7及之前版本在STS下都没问题,升级到Grails2.0后,在STS下则变成:

> File ××××× already exists. Overwrite?[y,n,a] > Invalid input. Must be one of [y,n,a] > Invalid input. Must be one of [y,n,a] > Invalid input. Must be one of [y,n,a] > Invalid input. Must be one of [y,n,a] > Invalid input. Must be one of [y,n,a] > Invalid input. Must be one of [y,n,a] > Invalid input. Must be one of [y,n,a] > Invalid input. Must be one of [y,n,a] > Invalid input. Must be one of [y,n,a] > Invalid input. Must be one of [y,n,a] > Invalid input. Must be one of [y,n,a] > Invalid input. Must be one of [y,n,a] > Invalid input. Must be one of [y,n,a] >……
……

无限的自动重复。

其实通常情况下,操作者在下指令前就清楚了解是否需要覆盖(基本也都是因为修改了一些内容后要重新生成代码),2.0以前的版本提示也就提示了,可以通过在STS的console中输入y或a来继续,2.0直接就无限了……

于是,像修改1.3.7版本一样,找到Grails安装目录下的scripts/_GrailsGenerate.groovy文件,修改generateForDomainClass方法:


def generateForDomainClass(domainClass) {    def templateGenerator = new DefaultGrailsTemplateGenerator(classLoader)    templateGenerator.overwrite = true // 这一行是新追加的    templateGenerator.pluginManager = pluginManager    if (generateViews) {        event("StatusUpdate", ["Generating views for domain class ${domainClass.fullName}"])        templateGenerator.generateViews(domainClass, basedir)        event("GenerateViewsEnd", [domainClass.fullName])    }    if (generateController) {        event("StatusUpdate", ["Generating controller for domain class ${domainClass.fullName}"])        templateGenerator.generateController(domainClass, basedir)        templateGenerator.generateTest(domainClass, "${basedir}/test/unit")        event("GenerateControllerEnd", [domainClass.fullName])    }}


其实只是追加了第三行。

热点排行