Play 是否支持每个环境单独的路由文件 - 开发、uat、生产



是否可以在开发模式下进行以下路由:

GET  /       controllers.Assets.at(path="/public/ui/dev", file="index.html")
GET  /*file  controllers.Assets.at(path="/public/ui/dev", file)

以及生产中的以下内容:

GET  /       controllers.Assets.at(path="/public/ui/prod", file="index.html")

是的,这是可能的。 在 conf/routes 中声明您的开发路线,但在 conf/prod.routes 中声明您的生产路线。 然后,有一个生产配置文件,conf/prod.conf ,并将其放入其中:

include "application.conf"
application.router = "prod.Routes"

现在,当您在生产中启动应用程序时,只需使用:

path/to/myapp/bin/myapp -Dconfig.resource=prod.conf -Dhttp.port=...

上面的解决方案运行良好,但意味着您正在复制路由,例如routes中的非静态资源和prod.routes文件。

如果你想保留一个单一的路由文件,你可以沿着Johanandren提议的道路走下去。我非常成功地使用了这种方法,并在 https://gist.github.com/drcharris/2e3518b212adfa1b6a7f

不是开箱即用的。但在这里,您有两个关于如何实现相同功能的想法:

  • 围绕 Assets.at 编写一个薄包装器,查看当前环境并以不同的方式处理它,然后使用修改后的路径调用 Assets.at
  • 覆盖在全局中完成路由的方式,如果您想继续对 prod 和 dev 路由文件使用路由 DSL,这有点困难,因为您必须弄清楚才能编译它们

最新更新