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)
grails.util.Environment,定义了许多预配置的环境。
Environment APPLICATION
Environment CUSTOM
Environment DEVELOPMENT
Environment PRODUCTION
Environment TEST
Run Code Online (Sandbox Code Playgroud)
我们application.yml
获得预先配置的development
、test
、 和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
。
我application.yml
的qa
ENV:
不过,独立运行效果很好:
./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 上遇到了一个类似的问题,请参考这个。
我已经遵循了大量文档和参考资料,但仍然无法重现您的问题。
链接: