将 Play 2.4 与重命名的“conf/routes”文件一起使用

Using Play 2.4 with a renamed `conf/routes` file

当我将 conf/routes 文件重命名为其他名称时,我的 simple Play 2.4 project 无法编译,例如conf/hello.routes。我这样做的原因是为了启用 API 的组合,同时允许它们在单独的 git 存储库和 sbt 项目中开发。

多项目支持的想法是基于 this project and blog post - 但这是使用 Play 2.3。

我得到的错误是:

$ sbt test
...
[info] Hello should
[error]   ! give {hello: true}
[error]    Unable to provision, see the following errors:
[error]    
[error]    1) Error in custom provider, java.lang.ClassCastException: interface play.api.routing.Router is not assignable from class hello.routes
[error]      while locating play.api.test.FakeRouterProvider
[error]      while locating play.api.routing.Router
[error]    
[error]    1 error (InjectorImpl.java:1025)
[error] com.google.inject.internal.InjectorImpl.get(InjectorImpl.java:1025)
[error] com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1051)
[error] play.api.inject.guice.GuiceInjector.instanceOf(GuiceInjectorBuilder.scala:321)
[error] play.api.inject.guice.GuiceInjector.instanceOf(GuiceInjectorBuilder.scala:316)
 ...

已解决此问题(git 存储库中的代码现在可以使用)。

问题可能与这两个有关:

  • Controller 实现希望在包 controllers.hello 中而不只是 hello
  • application.conf 文件中应该省略 controllers 命名空间,即 play.http.router = app.Routes

我只是通过将这段代码与有效的示例进行比较才了解到这一点。