playframework 2.0-SBT子项目测试类路径之谜



我目前正在处理两个SBT子项目:persistencesilhouette,即dependsOn persistence。我的silhouette测试类路径有问题。

persistence测试运行良好。该子项目在model.persistence包中声明了一些类。silhouette子项目在同一个包中定义了其他类。运行测试时,silhouette子项目中的其他类不会解析这些附加类。

大多数错误类似于:

Error:(7, 31) object routes is not a member of package controllers.silhouette
import controllers.silhouette.routes.{ ActivateAccountController => ActivateRoutes, SignInController => SignInRoutes }
Error:(18, 19) object silhouette is not a member of package views.html
import views.html.silhouette.{ emails => htmlEmail }

我可以看到silhouette子项目中的Twirl视图和路线已经生成。它们没有被silhouette子项目选中,这很奇怪。

以下是SBT子项目的定义:

lazy val silhouette: Project = project.in(file("modules/silhouette"))
  .configure(webappConfiguration)
  .dependsOn(persistence)
  .aggregate(persistence)
  .settings(
    libraryDependencies ++= silhouetteDependencies,
    javaOptions            += "-Dplay.http.router=silhouette.Routes",
    javaOptions in Runtime += "-Dconfig.file=../silhouette/conf/silhouette.application.conf",
    javaOptions in Test    += "-Dconfig.file=../silhouette/test/resources/test.silhouette.application.conf"
  )
addCommandAlias("testSilhouette", "; project silhouette; test")
lazy val persistence: Project = project.in(file("modules/persistence"))
  .configure(commonConfiguration)
  .settings(
    libraryDependencies ++= persistenceDependencies,
    javaOptions in Runtime += "-Dconfig.file=../model/src/main/resources/persistence.application.conf",
    javaOptions in Test    += "-Dconfig.file=../model/src/test/resources/test.model.application.conf"
  )

以下是一个正在进行的项目,说明了这个问题。

$ sbt ";project persistence; test"  # works
$ sbt ";project silhouette; test"   # fails as described

项目定义唯一的错误是silhouette子项目中缺少依赖项。直到我尝试在有问题的子项目上运行SBT控制台,错误消息才非常清楚

$ sbt
[info] Loading global plugins from /home/mslinn/.sbt/0.13/plugins
[info] Loading project definition from /var/work/blah/project
[info] Set current project to Blah (in build file:/var/work/blah/)
[Blah] $ project silhouette
[info] Set current project to silhouette (in build file:/var/work/blah/)
[silhouette] $ console
... compilation errors appeared here...

最新更新