gpt4 book ai didi

grails - 用于填充数据库的一次性 grails 脚本

转载 作者:行者123 更新时间:2023-12-02 08:57:03 25 4
gpt4 key购买 nike

更新:从 Grails 1.3.6 开始,可以通过 Gant 脚本访问完整域。来自 Grails 1.3.6 release notes :

您现在可以使用 run-script 命令从命令行运行一个或多个 Groovy 脚本,例如

grails 运行脚本 [脚本路径 1] [脚本路径 2]...[脚本路径 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 执行脚本时

我是否采取了错误的方法,或者我做错了什么更简单的事情?

感谢任何帮助

最佳答案

我知道这些脚本很有用,而且我可能会因为建议而收到讨厌的邮件,但我过去只是将此类内容直接合并到我的应用程序中。

我在配置中设置了一个标志,指示是否应该引导数据,如果是,则引导代码在启动时查找逗号分隔的文件并调用服务方法来加载数据。

关于grails - 用于填充数据库的一次性 grails 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4348803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com