Playframework Play是否支持每个环境(dev、uat、prod)的单独路由文件?

Playframework Play是否支持每个环境(dev、uat、prod)的单独路由文件?,playframework,Playframework,是否可以在开发模式下进行以下路由: 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") 不是现

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

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")

不是现成的。但是,对于如何实现相同的功能,您有两个想法:

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

  • 是的,这是可能的。在
    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=...
    

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


    如果要保留单个routes文件,可以沿着建议的路线继续。我非常成功地使用了此方法,并在

    上发布了此方法的要点。如果两个路由文件都定义了指向同一方法的路径(例如,
    GET/controllers.News.foo()
    ),是否可以使用此方法?我得到一个
    ReverseNews已经被定义为类ReverseNews
    编译错误…PlayFramework 2.5的ConfigurablAssets的更新版本