grails应用程序的种子数据

grails应用程序的种子数据,grails,seed,Grails,Seed,将种子(初始或测试)数据加载到grails应用程序中的最佳方法是什么。我在考虑三个选择 将所有内容放入*BootStrap.groovy文件中。如果域类和测试数据很多,那么这就很乏味了 编写自定义功能以通过xml加载它。groovy对xml的出色支持可能不会太难,但会为不同的域类提供大量的switch语句 使用Liquibase LoadData api。我看你可以很容易地从csv文件加载数据 选择3似乎最简单。但是,我对Liquibase并不熟悉。在这种情况下,它是好的,还是只用于迁移、db更

将种子(初始或测试)数据加载到grails应用程序中的最佳方法是什么。我在考虑三个选择

  • 将所有内容放入*BootStrap.groovy文件中。如果域类和测试数据很多,那么这就很乏味了
  • 编写自定义功能以通过xml加载它。groovy对xml的出色支持可能不会太难,但会为不同的域类提供大量的switch语句
  • 使用Liquibase LoadData api。我看你可以很容易地从csv文件加载数据
    选择3似乎最简单。但是,我对Liquibase并不熟悉。在这种情况下,它是好的,还是只用于迁移、db更改等。如果有人能提供更好的sol,或者指向Liquibase的示例,这将是非常有帮助的。

    看看,我正在使用Fixtures插件加载测试/初始数据,它对我很有用


    另一个答案是利用grails运行脚本。这将允许您移动可能放在引导中的内容,并将其保留在文件系统中您想要的位置(可能在代码库之外)。类似地,您可以安装控制台插件,并通过该插件在正在运行的应用程序上加载代码

    根据您的数据需求,还可以查看伟大的构建测试数据插件。

    查看SeedMe插件:


    我生成种子数据的一种方法是使用服务。我创建了一个类,我们称之为SeederService。我可以将此服务注入Bootstrap.groovy中,并调用我想要的任何方法


    SeederService的美妙之处在于,您还可以在单元测试中使用相同的服务。只需在单元测试中注入服务类并生成种子数据。

    谢谢您的指针。。同时,我决定自己从xml开始。。我没有探索太多,但没有看到太多关于固定装置使用的例子。。在一个、多个、多个etc场景中使用它容易吗?Grails RunScript:但是,如果我们想在QA或UAT环境中执行此操作,该方法要求我们在服务器上具有“Grails上下文”,不是吗?grails运行脚本需要grails以及安装在服务器中的项目(源代码),对吗?grails运行脚本是否在grails开发环境之外工作?在这种情况下,您可能需要查看控制台或远程控制插件。使用console插件,您可以在运行中的实例上运行脚本或任意groovy代码,并具有对的完全访问权限。请记住,在生产部署中应禁用或严格保护该链接。链接已断开2021yes。也许它动了它于2017年关闭-
    seed = {
        author(meta:[key:'name'], name: 'David', description: 'Author Bio Here')
    }