在脚本中使用Grails服务

时间:2014-04-10 01:48:02

标签: grails service gant

我尝试在以下Grails脚本中使用Grails服务

includeTargets << grailsScript("_GrailsInit")

target(loadGames: "The description of the script goes here!") {
   def listFile = new File('list.txt')

   listFile.eachLine {
      def result = ctx.getBean("bggService").search(it)
      println it + " " + result.length()
   }
}

setDefaultTarget(loadGames)

我已经看过十几个不同的网页,每个网页都提供ctx appCtxapplicationContext(以及许多其他)的不同组合作为建议,但没有一个他们工作。通常他们抱怨我尝试使用的上下文变量不存在。

为什么Grails只能在脚本中使用服务,就像在控制器中使用它们一样?

在Grails脚本中使用Grails服务的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

通过bootstrap命令可以获得ApplicationContextgrailsApplication。添加_GrailsBootstrap脚本,然后调用configureApp ()或依赖它,以便在脚本中提供ApplicationContext

includeTargets << grailsScript("_GrailsInit")
includeTargets << grailsScript("_GrailsBootstrap")

target(loadGames: "The description of the script goes here!") {
   depends(configureApp)

   def listFile = new File('list.txt')

   listFile.eachLine {
      //Once configureApp() called ApplicationContext can be accessed as appCtx
      def result = appCtx.getBean("bggService").search(it)
      println it + " " + result.length()
   }
}

setDefaultTarget(loadGames)