为什么Gant(1.9.0)中的includeTargets不好使?

最近用Grails开发一个小网站(IDEA 10),想用Gant build整个项目,在该项目下创建了build.gant,想调用Grails下的一些script的task做些事情,于是参考了Grails文档和网上的一些例子,创建了最简单的task:

grailsHome = ant.project.properties."environment.GRAILS_HOME"
//includeTargets << new File ('${grailsHome}/scripts/_GrailsInit.groovy')
includeTargets << grailsScript('_GrailsInit')
//includeTargets << grailsScript('Init')
target(test: 'The default target') {
    //depends(init)
    println "home = ${grailsHome}"
    ant.echo(message: 'running build.gant')
}
setDefaultTarget(test)

可是无论使用哪个includeTargets,都在该行发生问题,

build, line 4 -- Error evaluating Gantfile: 
    No signature of method: build.grailsScript() is applicable for argument types: 
	    (java.lang.String) values: [_GrailsInit]

无论Include Init.groovy还是_GrailsInit.groovy都一样。

可是使用的是文档提供的例子。为什么?

对于Grails的Script,它只能在Grails环境中使用,直接用“grails 脚本名”即可。关于如何创建Grails脚本,可参见Grails的文档,里面说得很清楚。

不太清楚你为什么要用Gant,用Grails你已经完全可以进行编译、运行、测试、打包,用相应的插件甚至还可以直接部署。有什么东西非要让你去直接使用Gant呢?其实在Grails环境下根本就不需要这样多此一举!直接使用Grails的脚本和事件机制,就能够完全做到Gant想要做到的内容。而且,这些就是建立在Gant基础之上的。换种思路吧!

By 匿名用户 - Posted on 17 五月 2011