在Tomcat中选择Grails Environment

时间:2013-09-19 14:24:06

标签: tomcat grails config

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

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

所以在Config.groovy中有:

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

}

但是,在启动Tomcat时,部署的Tomcat服务器如何在“生产”中选择“开发”?我假设它将作为web.xml中的一些上下文或init参数,类似于

<code>
    <init-param>
        <param-name>grails.environment</param-name>
        <param-value>production</param-value>
    </init-param>
</code>

所有grails文档都假定您运行

grails war your-selected-environment

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

4 个答案:

答案 0 :(得分:9)

如果你跑

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

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

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

-Dgrails.env=test

答案 1 :(得分:4)

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

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

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

CATALINA_OPTS='-Xms2048m -Xmx8192m -Dgrails.env=dev'; 将dev替换为您想要的环境

答案 2 :(得分:0)

在构建战争时选择环境,而不是在tomcat启动时选择。当你运行

grails war

隐式选择production环境,但您可以使用-Dgrails.env=development在命令行上覆盖它。查看有关部署的手册部分:http://grails.org/doc/2.2.4/guide/single.html#deployingAnApplication

答案 3 :(得分:0)

所以你会说

    grails> prod war

其中prod是环境名称。您可以拥有一个名为space的环境并执行

    space war

我没有看到文档,你可以在部署后更改它。在我的WEB-INF文件夹(爆炸的WAR)中有一个application.properties文件

grails.env=development
grails.war.deployed=true
grails.buildScope=war
app.servlet.version=2.5

我怀疑这会起作用,但要检查一下。