Grails:如何从命令行脚本访问应用程序配置?

Grails:如何从命令行脚本访问应用程序配置?,grails,command-line,configuration,groovy,Grails,Command Line,Configuration,Groovy,我需要在我的grails应用程序中执行一个自定义命令行任务,因此我使用grails创建脚本my script创建了一个脚本 从该脚本中,我想访问应用程序的一些配置属性。通常,您可以通过grailsApplication.config执行此操作。但是,grailsApplication似乎无法在命令行脚本的上下文中使用。下面的脚本 includeTargets << grailsScript("Init") target(main: "The description of the s

我需要在我的grails应用程序中执行一个自定义命令行任务,因此我使用grails创建脚本my script创建了一个脚本

从该脚本中,我想访问应用程序的一些配置属性。通常,您可以通过grailsApplication.config执行此操作。但是,grailsApplication似乎无法在命令行脚本的上下文中使用。下面的脚本

includeTargets << grailsScript("Init")

target(main: "The description of the script goes here!") {
    println  grailsApplication.config.mysetting
}

setDefaultTarget(main)
我还尝试了ConfigurationHolder.config,它只返回null


那么,如何从从命令行启动的脚本访问应用程序配置呢?

诀窍是拉入boostrap目标并依赖它们,如下所示。请注意,应用程序上下文对象称为grailsApp,而不是在此阶段的grailsApplication

includeTargets << grailsScript('_GrailsBootstrap')

target(main: "The description of the script goes here!") {
    depends checkVersion, configureProxy, bootstrap
    println  grailsApp.config.mysetting
}

setDefaultTarget(main)

您也可以使用该命令。这对我不起作用,因为它试图初始化休眠会话。我的应用程序使用mongodb作为主数据存储,因此运行脚本失败。

诀窍是拉入boostrap目标并依赖它们,如下所示。请注意,应用程序上下文对象称为grailsApp,而不是在此阶段的grailsApplication

includeTargets << grailsScript('_GrailsBootstrap')

target(main: "The description of the script goes here!") {
    depends checkVersion, configureProxy, bootstrap
    println  grailsApp.config.mysetting
}

setDefaultTarget(main)
您也可以使用该命令。这对我不起作用,因为它试图初始化休眠会话。我的应用程序使用mongodb作为主数据存储,因此运行脚本失败。

1请参阅脚本顶部的GrailsPackage:

includeTargets << grailsScript('_GrailsPackage')
1请参阅脚本顶部的_GrailsPackage:

includeTargets << grailsScript('_GrailsPackage')

我还不能写评论,所以我正在发布一个答案

我认为最好使用snowindy建议的_GrailsPackage脚本。原因是使用bootstrap实际上会引导应用程序,这意味着连接到数据库、执行bootstrap.groovy等。仅使用带有compile和createConfig依赖项的_grailspackage就需要编译运行

取决于脚本的功能,这可能是您想要的。在我的例子中,我生成了一些SQL脚本,这些脚本可以通过Config.groovy中的设置进行自定义,因此启动应用程序只是放慢了速度

干杯,
Ben

我还不能写评论,所以我正在发布答案

我认为最好使用snowindy建议的_GrailsPackage脚本。原因是使用bootstrap实际上会引导应用程序,这意味着连接到数据库、执行bootstrap.groovy等。仅使用带有compile和createConfig依赖项的_grailspackage就需要编译运行

取决于脚本的功能,这可能是您想要的。在我的例子中,我生成了一些SQL脚本,这些脚本可以通过Config.groovy中的设置进行自定义,因此启动应用程序只是放慢了速度

干杯, 本