我的游戏项目非常庞大,路线文件约为1Mb。现在,当scala编译时,我有一个例外“方法代码太大”,因为路由和反向路由scala文件是从我的路由文件创建的(也很大)。
所以,我需要在没有子项目的情况下拆分我的路径文件。实际上,我无法将项目拆分为子项目,因为它的组件是相互依赖的。
我尝试了两种方法:
我添加了一个名为technical.routes的新配置文件,在里面添加一些路由,从“routes”中删除相同的路由,然后使用“ - > technical.Routes”导入文件 一切都编译好了,我没有先前的异常,但是有些东西是错误的,因为当它停止编译时,它会一遍又一遍地重复......并且永远不会结束。
我添加了一个名为technical.routes的新conf文件,在里面添加一些路由,从“routes”中删除相同的路由,但是我没有在主路由文件中导入它,而是在conf文件中添加了它: “application.router =”routes,technical.routes“”。 但它不起作用,因为这里只能声明一条路线。
请问怎么办?
答案 0 :(得分:24)
嗯,第一种方法是有效的。我从零开始,它起作用了。我在编译命令之前做了一个干净的命令。似乎旧的编译文件是我的问题的原因。
请注意,路径文件中的包名称不能重叠。例如。在此示例中,technical.routes
文件包含controllers.technical
中的所有路由,主路由文件不能包含controllers.technical
包中的任何路由。
conf/routes
内容:
# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~
-> /technical technical.Routes
GET / controllers.Dashboard.index()
conf/technical.routes
内容:
# Routes
# ~~~~
GET / controllers.technical.App.index()
答案 1 :(得分:4)
如果您的文件名是technical.routes, 在包含文件的同时,请提及技术。路径(上限)。
参数 - >是url前缀,因此要访问technical.routes文件的任何url,需要添加前缀。
http://127.0.01/ 技术 / {在technical.routes文件中定义的网址}
答案 2 :(得分:0)
以上信息都不适用于我在 play 2.8.x 和 macwire 中。分享对我有用的解决方案。
如果您正在使用 sbt 单个项目和 DI 并且仍然想使用多个路由文件,您可以像下面那样这样做。 无需 sbt 多项目设置。
conf/
routes
admin.routes
配置/路由:
GET /index controllers.HomeController.index()
-> /admin admin.Routes
conf/admin.routes:
GET /index controllers.admin.HomeController.index()
在应用程序加载器中, 将下面添加到构建路由中。
val adminRouter: admin.Routes = {
val prefix = "/"
wire[admin.Routes] //replace it with constructor if you do manual DI
}
val router: Routes = {
val prefix = "/"
wire[Routes] //replace it with constructor if you do manual DI
}
使用 play 2.8.x 和 macwire 进行测试。