首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Grails:如何从命令行脚本访问应用程序配置?

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

Stack Overflow用户
提问于 2011-08-14 14:57:10
回答 3查看 1.8K关注 0票数 1

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

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

代码语言:javascript
运行
复制
includeTargets << grailsScript("Init")

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

setDefaultTarget(main)

...yields (以grails my-script身份运行时):

代码语言:javascript
运行
复制
groovy.lang.MissingPropertyException: No such property:
                                      grailsApplication for class: MyScript

我还尝试了ConfigurationHolder.config,它只返回null。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-14 15:26:46

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

代码语言:javascript
运行
复制
includeTargets << grailsScript('_GrailsBootstrap')

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

setDefaultTarget(main)

您也可以使用run-script命令。这对我不起作用,因为它试图初始化一个Hibernate会话。我的应用程序使用mongodb作为主数据存储,requires that you uninstall the Hibernate plugin - so run-script会失败。

票数 3
EN

Stack Overflow用户

发布于 2013-03-06 00:58:26

1)请参考脚本顶部的_GrailsPackage

代码语言:javascript
运行
复制
includeTargets << grailsScript('_GrailsPackage')

2)依赖于_GrailsPackage中描述的编译和createConfig目标

代码语言:javascript
运行
复制
target(main: "Your main") {
    depends(compile,createConfig)
    println "My value: ${config.my.config.value}"
}
票数 2
EN

Stack Overflow用户

发布于 2015-01-30 18:50:21

我还不能写评论,所以我正在张贴答案。

我认为使用snowindy建议的_GrailsPackage脚本的解决方案是首选。原因是使用bootstrap实际上会启动应用程序,这意味着连接到数据库、执行BootStrap.groovy等。只需将_GrailsPackacke与compile和createConfig依赖项一起使用,就需要运行编译。

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

干杯,本

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7055500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档