关于create-script / run-script的文档很少,所以我想知道是否可以在grails脚本中注入/使用域类。 在普通的Grails课程中,我可以注入一项服务:
def我的服务
但是我不确定在grails脚本里面会有什么内容
答案 0 :(得分:1)
在脚本中使用domainClasses:
includeTargets << grailsScript("_GrailsBootstrap")
在顶部
然后在需要访问权限的函数中添加:
depends(bootstrap)
def myDomainClass = grailsApp.classLoader.loadClass("myapp.MyDomainClass")
def myDomainClassList = myDomainClass.list()
Grails 2的权威指南中有很多关于所有这些的信息
答案 1 :(得分:1)
使用Grails 2.4.3时,这是我的完整解决方案:
首先,正如Tai "Error loading plugin manager: TomcatGrailsPlugin" on Grails 2.3 Database Migration中提到的那样,将buildConfig.groovy中的tomcat构建类型更改为编译而不是像这样构建:
compile ':tomcat:7.0.42'
这可以避免“每次运行脚本时都会出现”错误加载插件管理器:TomcatGrailsPlugin“错误。
接下来,创建脚本/ DoSomething.groovy
includeTargets << grailsScript("_GrailsInit")
includeTargets << grailsScript("_GrailsBootstrap")
includeTargets << grailsScript("_GrailsClasspath")
target(main: "An example script that calls a service") {
depends(bootstrap)
def someService = appCtx.getBean("someService") // look up the service
someService.runReportOrSomething() // invoke a method on the service
}
setDefaultTarget(main)
上面的代码会导致整个Grails堆栈初始化,因此将为您设置所有服务,域类等。
最后,要运行它,请执行以下操作:
grails prod do-something --stacktrace -echoOut
您可能会想要“grails run-script scripts / DoSomething.groovy”,但出于任何原因似乎不起作用。