grails 4.x:使用自定义环境创建 WAR 始终在开发中运行

Mik*_*ler 2 java grails grails-4

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

我在 Grails 4.0.5 下创建了一个包含以下内容的 WAR:

grails -Dgrails.env=qa war 
Run Code Online (Sandbox Code Playgroud)

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

info.app.version=2.0.7
info.app.name=myapp
grails.env=qa
info.app.grailsVersion=4.0.5
Run Code Online (Sandbox Code Playgroud)

但是,当我将其放入 Tomcat 8 并运行时,我得到以下信息:

 [ost-startStop-1] com.myapp.ApplicationLoader        : The following profiles are active: development
Run Code Online (Sandbox Code Playgroud)

不过,独立运行效果很好:

./gradlew -Dgrails.env=qa bootRun 
Run Code Online (Sandbox Code Playgroud)

Rah*_*dik 5

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

Environment APPLICATION
Environment CUSTOM
Environment DEVELOPMENT
Environment PRODUCTION
Environment TEST
Run Code Online (Sandbox Code Playgroud)

我们application.yml获得预先配置的developmenttest、 和production环境。因此,如果我们想添加自定义环境,我们也可以类似地添加。在你的情况下它将是qa

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

grails [environment] [command name]
Run Code Online (Sandbox Code Playgroud)

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

grails test war
Run Code Online (Sandbox Code Playgroud)

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

grails -Dgrails.env=UAT run-app
Run Code Online (Sandbox Code Playgroud)

我在 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部署/提取我的war时,在浏览器中输入本地url。

在此输入图像描述

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

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

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

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

申请详情: 应用程序详细信息

tomcat版本是apache-tomcat-8.5.63

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

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

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

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

我已经遵循了大量文档和参考资料,但仍然无法重现您的问题。

链接: