gpt4 book ai didi

grails - 如何扩展用于 'grails run-app' 的类路径

转载 作者:行者123 更新时间:2023-12-03 23:52:40 25 4
gpt4 key购买 nike

我的 Config.groovy 文件中有以下内容:

grails.config.locations = [ "classpath:env.groovy" ]

现在,我到底应该将“env.groovy”放在哪里,以便在 grails run-app 期间可以在 CLASSPATH 上使用它?这里的文档非常缺乏。

通过在 $APP_HOME/etc 中放置“env.groovy”然后运行,我可以让它在纯命令行上工作:
$ grails -classpath ./etc run-app

这似乎有点骇人听闻,但我可以忍受它......但是,当我使用 Grails eclipse 插件 (STS) 启动 run-app 时,我无法使任何此类配置工作:
Unable to load specified config location classpath:env.groovy : class path resource [env.groovy] cannot be opened because it does not exist

我看过相关帖子 here , here , here , 和 here但答案并不令人满意。

我正在寻找一个基于 CLASSPATH 的解决方案,它将在开发模式(命令行和 eclipse)下与“run-app”一起使用。我知道如何为我的部署 servlet 容器设置 CLASSPATH,所以这不是问题。

最佳答案

Eric,我们这样做的方法是指定一个带有配置文件位置的 Java 系统属性,然后我们在 Config.groovy 上获取它,如下所示:

if (System.properties["application.config.location"]) {
grails.config.locations = [
"file:" + System.properties["application.config.location"] + "${appName}-config.groovy"
]
}

正如你所看到的,我们只设置了文件所在的文件夹在 Java 系统属性中,按照惯例,我们说文件名应该是应用程序名称+“-config.groovy”,但如果你需要,你可以指定整个路径,包括系统属性中的文件名。

然后在运行应用程序时,您只需像这样设置变量:
grails -Dapplication.config.location=/Users/eric/ run-app

正如您在代码中看到的,如果尚未定义 Java 系统属性变量,则有一个 if 语句可防止您查找配置文件,这样您就可以在不使用外部配置文件的情况下运行您的应用程序,而只需使用Config.groovy 中定义的配置设置。

如果您在 Eclipse 或 IntelliJ 中运行您的应用程序,则将此变量作为 JVM 变量传递。

这是与必须更改类路径或在类路径中包含配置文件以便应用程序选择它不同的选项。

关于grails - 如何扩展用于 'grails run-app' 的类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5204675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com