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,这有点困难,因为您必须弄清楚如何编译它们

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

      • 在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=...
        

        是的,这是可能的。在
        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文件,可以沿着建议的路线继续。我非常成功地使用了此方法,并在

        上发布了此方法的要点。上述解决方案运行良好,但意味着您正在复制
        路由
        prod.routes
        文件中的非静态资源的路由


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

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