【问题标题】:SBT subproject test classpath mysterySBT子项目测试类路径之谜
【发布时间】:2016-07-31 02:45:50
【问题描述】:

我目前正在处理两个 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"
  )

Here is a working project 说明问题。

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

【问题讨论】:

    标签: playframework-2.0 sbt


    【解决方案1】:

    项目定义的唯一问题是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...
    

    【讨论】:

      猜你喜欢
      • 2011-12-16
      • 2017-10-19
      • 1970-01-01
      • 2012-09-11
      • 2012-01-15
      • 2011-05-11
      • 2017-04-07
      • 2022-01-11
      • 1970-01-01
      相关资源
      最近更新 更多