【发布时间】:2014-08-27 17:45:13
【问题描述】:
我想在我的 grails 应用程序中加载特定于环境的配置,以便根据 grails 应用程序在哪个 JVM 上运行,我可以指向该环境特定的 url。在我的例子中,当我的应用从 dev 到 prod 时,我有 4 个不同的环境可供使用(而不是 grails 应用假定的默认 3 个)。
我的 JVM 都定义了一个系统属性,当我执行“System.getProperty()”时,告诉我该应用程序正在哪个环境中运行。
我的问题是,在运行时检查和加载环境特定配置的最佳位置是什么?在 BootStrap.groovy 内部?我没有使用命令行或 grails {env_name} war 构建我的战争文件的选项。
谢谢。
【问题讨论】:
-
您所需要的都在这里:grails.org/doc/latest/guide/conf.html#environments :)
-
谢谢。我读了那个。我无法理解 grails 如何知道/区分它当前所处的环境?当应用程序从 dev 转移到 prod 时,它如何知道它是 prod?
-
视情况而定。如果您使用
run-app运行grails 应用程序,那么您可以将环境名称与run-app命令一起传递。例如,如果您在 Tomcat 中部署它,您将创建特定于环境的战争,并且您可以在构建战争时选择环境 (grails <env_name> war)。这一切都在“针对不同环境的打包和运行”部分的链接文档页面中进行了很好的描述。 -
谢谢帕维尔。我真的很感谢你的帮助。在我工作的环境中,我使用 maven 和一些构建脚本从 dev...prod 移动代码。在打包战争时,我们从不告诉应用程序
,因为我们尝试以不可知论的方式对应用程序环境进行编程。这就是为什么,当 grails-app 启动并加载配置时,我需要动态检查环境。 -
如果您不想为每个 JVM 构建单独的 WAR 文件,您可以添加代码来检查 System 属性的值并根据该值设置配置。
标签: grails grails-2.0 grails-config