更新:从 Grails 1.3.6 开始,可以从 Gant 脚本访问整个域。来自 Grails 1.3.6 发行说明:
您现在可以使用 run-script 命令从命令行运行一个或多个 Groovy 脚本,例如
grails run-script [path-to-script-1] [path-to-script-2]...[path-to-script-n]
这解决了 Gant 脚本中的问题,您无法方便地访问应用程序类,因为当脚本启动时它们在类路径中不可用。
大家好,
我是使用 Grails 的新手(在实际项目中),我需要执行一个一次性脚本,该脚本读取一个文件,然后填充我的数据库。
我希望脚本在我的 grails 应用程序的上下文中运行,所以我使用了 create-script 命令。我现在明白这使它成为一个“甘特”脚本。这样做的原因是我认为它可以让我轻松访问所有 grails 领域的优点,这样我就可以轻松地做这样的事情:
Car car = new Car(model: 'bar', brand: 'Ford')
car.save()
在这里,Car 是我的域类之一,我从文件中检索到了字符串“bar”和“Ford”。
我的脚本的开头如下所示:
import com.foo.Car
grailsHome = Ant.project.properties."environment.GRAILS_HOME"
includeTargets << new File ( "${grailsHome}/scripts/Bootstrap.groovy" )
target(main: "a script for storing cars") {
depends(bootstrap, classpath) // code dealing with the file with cars follows
令人惊讶的是,groovy 给了我一个java.lang.NoClassDefFoundError: com.foo.Car
令人惊讶的是,当我使用命令执行脚本时grails LoadCars
我采取了错误的方法,还是我做错了什么更简单的事情?
任何帮助表示赞赏