SBT子项目测试类路径之谜
SBT subproject test classpath mystery
我目前正在处理两个 SBT 子项目:persistence
和 silhouette
,其中 dependsOn persistence
。 silhouette
测试类路径有问题。
persistence
测试 运行 很好。该子项目在 model.persistence
包中声明了一些 类。 silhouette
子项目在同一个包中定义了额外的 类。 运行ning 测试时,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"
)
Here is a working project 说明了问题。
$ 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...
我目前正在处理两个 SBT 子项目:persistence
和 silhouette
,其中 dependsOn persistence
。 silhouette
测试类路径有问题。
persistence
测试 运行 很好。该子项目在 model.persistence
包中声明了一些 类。 silhouette
子项目在同一个包中定义了额外的 类。 运行ning 测试时,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"
)
Here is a working project 说明了问题。
$ 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...