1

我无法让我的自定义环境在 Tomcat 下运行。它总是加载开发配置文件。

我在 Grails 4.0.5 下使用以下内容创建了一个 WAR:

grails -Dgrails.env=qa war 

生成的 grails.build.info 看起来是正确的:

info.app.version=2.0.7
info.app.name=myapp
grails.env=qa
info.app.grailsVersion=4.0.5

但是,当我将它放入 Tomcat 8 并运行时,我得到了这个:

 [ost-startStop-1] com.myapp.ApplicationLoader        : The following profiles are active: development

但是,独立运行可以正常工作:

./gradlew -Dgrails.env=qa bootRun 
4

1 回答 1

4

grails.util.Environment,定义了许多预配置的环境。

Environment APPLICATION
Environment CUSTOM
Environment DEVELOPMENT
Environment PRODUCTION
Environment TEST

application.yml我们得到预配置developmenttest、 和production环境。因此,如果我们想添加自定义环境,我们同样添加。在您的情况下,它将是qa.

使用 Grails 命令行,我们可以在特定环境的上下文中执行任何命令。格式为:

grails [environment] [command name]

假设如果要为test您运行的环境创建一个 WAR:

grails test war

要针对其他环境,您可以将 grails.env 变量传递给任何命令:

grails -Dgrails.env=UAT run-app

我在 Grails 4.0.5 下使用以下内容创建了一个 WAR:

grails -Dgrails.env=qa 战争

是的,根据 grails 文档和配置,一切看起来都不错。

我已经创建了相同的 POC 应用程序Grails 4.0.5并下载了外部 tomcat apache-tomcat-8.5.63

Tomcat 和 grails

application.ymlqaENV:

质量保证环境

但是,独立运行可以正常工作:

./gradlew -Dgrails.env=qa bootRun

是的。这也很好用。所以,现在我已经创建了war文件,grails -Dgrails.env=qa war 然后我启动了我的tomcat并将我的poc-app-0.1.war文件放到了tomcat中。

在此处输入图像描述

当 tomcat 部署/提取我的战争时,在浏览器中输入本地 url。

在此处输入图像描述

您可以在上图中看到,环境是qa

因此,当我在创建战争时传递给 env 时,一切都在运行。

我在多个环境中进行了测试,包括预配置环境和自定义环境。但是没有遇到任何问题,例如创建战争qa和运行dev

我也进行了测试,java -jar poc-app-0.1.war它运行在与我们给出的相同的环境中。

申请详情: 应用详情

和tomcat版本是apache-tomcat-8.5.63

这可能是您的应用程序的某些版本或配置问题。

请参考我的 poc 的这个链接。您能否尝试创建战争并以相同的方式部署到您的 tomcat 并让我知道。

如果您仍然遇到问题,请分享您的最小代码或 poc。

即使我在 grails repo 上遇到了更多类似的问题,请参考这个。

我已经关注了很多文档和参考资料,但仍然无法重现您的问题。

链接:

于 2021-02-28T18:34:41.783 回答