grails.util.Environment,定义了许多预配置的环境。
Environment APPLICATION
Environment CUSTOM
Environment DEVELOPMENT
Environment PRODUCTION
Environment TEST
在application.yml
我们得到预配置development
的test
、 和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
。
我application.yml
的qa
ENV:
但是,独立运行可以正常工作:
./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 上遇到了更多类似的问题,请参考这个。
我已经关注了很多文档和参考资料,但仍然无法重现您的问题。
链接: