Grails war命令:场景背后会发生什么

时间:2015-02-12 19:12:28

标签: java grails war

我知道在Grails框架中,您可以使用

构建war文件

grails war (制造生产战争)

或者您可以使用

构建特定于环境的war文件

grails test war

现在,我无法理解的是,如果我使用 grails war 构建war文件,但将其部署到测试环境(其中-Dgrails.env = test ),使用 grails war 命令构建的war文件可以通过选择** test **环境设置(比如从测试网址而不是prod网址中提取数据)来愉快地运行。

我的问题是:使用特定于环境的命令构建war文件有什么意义(即为什么在使用 grails war 构建war文件时使用 grails测试战争 strong>无处不在?)。

我错过了一些明显的东西吗?

2 个答案:

答案 0 :(得分:4)

使用环境的原因是因为您可以在应用程序中编写代码以挂接到构建过程并根据环境更改生成的WAR。例如,在web.xml中重新配置一些过滤器。它是一个延伸点。如果需要,您可以使用它。

答案 1 :(得分:1)

Grails拥有三个自动环境:dev,test,prod。有一些 各种“脚本”的默认值,例如run-app运行dev,test-app运行测试, 战争为生产而战。这些是为了方便和充实 从开发人员的日常使用模式中感受到。例如在测试中 default是一个in-mem db。

您还可以根据需要添加更多环境。例如。拥有staging 或者integration环境是常见的,所以通过提供这样的环境(也许 只有一些配置或数据库更改)您可以轻松地为服务器构建war文件 你用于你的QA团队。

另一个用例就是建立一场开发战,因为可能有些奇怪的事情 与生产服务器上的战争,你只需要对抗战争 奇怪的tomcat 6.x真实环境,但与dev设置对抗 你的数据库。

也就是说,仍然可以通过配置文件添加配置,但是 环境为“所有参与者”提供了一个相当理智的设置,因为它们通常是 在版本控制中。

作为最后一步,您仍然可以访问自己的环境 scripts/_Events.groovy个钩子,您可以在丢弃或添加东西, 但这只适用于那个确切的环境(例如放弃一些罐子,如同 他们已经在服务器上了。)

最后,此功能可让您自由地做您想做的事情。很高兴,如果你永远不必使用它。但是一旦你需要,你会很高兴它就在那里。