Grails war 命令:幕后发生的事情

Grails war command: what happens behind the scene

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

构建 war 文件

grails war(构建产品war)

或者您可以使用

构建特定于环境的 war 文件

grails 测试war

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

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

我是不是遗漏了什么明显的东西?

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

Grails 拥有三个自动化环境:dev、test、prod。有一些 各种 "scripts" 的默认值,例如运行-app 运行s dev, test-app 运行s test, war 为产品构建 war。这些都是为了方便和充分利用 从开发人员的日常使用模式中感知。例如在测试 默认是一个内存数据库。

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

另一个用例是构建一个开发 war,因为可能会有一些奇怪的东西 在生产服务器上使用 war,你只需要 运行 war 反对 那个奇怪的 tomcat 6.x 现实生活环境,但开发设置反对 你的数据库。

也就是说,您仍然可以通过配置文件添加配置,但是 环境为 "all involved" 提供了一个相当合理的设置,因为它们通常是 在版本控制中。

作为最后一步,您仍然可以访问自己的环境 scripts/_Events.groovy 钩子,你可能会在哪里,例如删除或添加一些东西, 但这只对那个确切的环境有意义(例如,放下一些罐子,因为 他们已经在服务器上了)。

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