我的grails应用程序中需要一个自定义命令行任务,因此我使用grails create-script my-script创建了一个脚本。
通过该脚本,我想访问应用程序的一些配置属性。通常情况下,您可以通过grailsApplication.config完成此操作。但是,在命令行脚本的上下文中似乎不能使用grailsApplication。下面的脚本....
includeTargets << grailsScript("Init")
target(main: "The description of the script goes here!") {
println grailsApplication.config.mysetting
}
setDefaultTarget(main)...yields (以grails my-script身份运行时):
groovy.lang.MissingPropertyException: No such property:
grailsApplication for class: MyScript我还尝试了ConfigurationHolder.config,它只返回null。
那么,如何从命令行启动的脚本访问应用程序配置呢?
发布于 2011-08-14 15:26:46
诀窍是引入引导目标并依赖它们,如下所示。请注意,在此阶段,应用程序上下文对象称为grailsApp,,而不是grailsApplication。
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会失败。
发布于 2013-03-06 00:58:26
1)请参考脚本顶部的_GrailsPackage:
includeTargets << grailsScript('_GrailsPackage')2)依赖于_GrailsPackage中描述的编译和createConfig目标
target(main: "Your main") {
depends(compile,createConfig)
println "My value: ${config.my.config.value}"
}发布于 2015-01-30 18:50:21
我还不能写评论,所以我正在张贴答案。
我认为使用snowindy建议的_GrailsPackage脚本的解决方案是首选。原因是使用bootstrap实际上会启动应用程序,这意味着连接到数据库、执行BootStrap.groovy等。只需将_GrailsPackacke与compile和createConfig依赖项一起使用,就需要运行编译。
取决于你的脚本做了什么,这可能是你想要的。在我的例子中,我生成了一些SQL脚本,可以通过Config.groovy中的设置进行自定义,所以启动应用程序只会减慢速度。
干杯,本
https://stackoverflow.com/questions/7055500
复制相似问题