在Tomcat中选择Grails Environment

iga*_*gaz 4 grails tomcat config

我继承了一个部署在Tomcat中的Grails项目.我基本上必须对先前工程师所做的工程进行逆向工程.

我的问题是Grails如何选择其中一个Grails环境:

所以在Config.groovy中有:

environments
{
    development 
    {
        .  . . 
    }
    production
    {
       . . .
    }    

}
Run Code Online (Sandbox Code Playgroud)

但是,在部署的Tomcat服务器中,如何在启动Tomcat时选择"开发"而不是"生产"?我假设它会像web.xml中的某些context或init参数一样

<code>
    <init-param>
        <param-name>grails.environment</param-name>
        <param-value>production</param-value>
    </init-param>
</code>
Run Code Online (Sandbox Code Playgroud)

所有grails文档都假定您运行

grails war your-selected-environment
Run Code Online (Sandbox Code Playgroud)

但没有设计准确记录战争文物如何受到影响.

Ed *_*les 9

如果你跑

grails test war
Run Code Online (Sandbox Code Playgroud)

例如,然后构建war以便它只使用'test'特定环境块中的代码.无需担心运行时环境中的任何内容.

缺点是你必须为每个环境建立一个单独的战争.

或者,您可以生成单个war,然后在tomcat启动时为每个环境设置一个环境变量,告诉grails选择哪些配置.例如,您可以通过设置来完成此操作

-Dgrails.env=test
Run Code Online (Sandbox Code Playgroud)


Lou*_*NON 5

编辑您的 tomcat 环境文件。对于 Tomcat 7:

/path/to/apache-tomcat-7.x.x/bin/setenv.sh

并将 grails.env 系统属性添加到命令行

CATALINA_OPTS='-Xms2048m -Xmx8192m -Dgrails.env=dev'; 用你想要的环境替换 dev