【问题标题】:Play 2.2.2 with SBT sub projects and Scala使用 SBT 子项目和 Scala 玩 2.2.2
【发布时间】:2014-05-18 11:38:43
【问题描述】:

我正在尝试使用 Play 2.2.2 和 SBT 0.13.1 设置多模块开发环境

我的项目结构如下:

myProject
 └ build.sbt
 └ app - this code works perfect
 └ modules
   └ testModule
     └ build.sbt
     └ src
       └ main
         └ scala - here I have simple object Foo with method which returns string
       └ test
         └ scala - here is Spec2 test for Foo object with JUnitRunner
 └ test - here is Spec2 tests for app and these tests also works fine

build.sbt 根目录包含:

import play.Project._

name := "FooBar"

version := "1.0"

playScalaSettings

lazy val main = project.in(file("."))
  .dependsOn(testModule).aggregate(testModule)

lazy val testModule = project.in(file("modules/testModule"))

模块中的build.sbt 仅包含:

import play.Project._

name := "FooBar-module"

playScalaSettings

当我尝试使用 testModule 中的代码时,编译器告诉我它甚至无法从该模块中找到包。在运行测试时我也得到了

没有要为 testModule/test:test 运行的测试

但是如果我在testModule中写了无效的代码,我会开始从这个模块中得到错误,所以模块肯定是编译的。

这里可能有什么问题? SBT 配置看起来正确

【问题讨论】:

    标签: scala playframework sbt


    【解决方案1】:

    playScalaSettings 包含大多数路径的设置。这包括将测试源设置为路径/test(参见default settings in doc)。然而,在您的布局中,测试源位于src/test。所以 sbt 不会在测试中寻找这些文件。

    如果您的模块是一个播放项目,那么要么相应地更改文件夹布局,要么配置路径以匹配您的布局。如果不删除playScalaSettings 行。

    你可以这样设置测试源路径:

    scalaSource in Test <<= baseDirectory / "src" / "test" / "scala"
    

    【讨论】:

    • 是的,我在 playScalaSettings 中更改了目录,一切正常 - 测试和应用程序!非常感谢!
    • 关于.aggregate(testModule):没有聚合,如果在主项目上测试,在子项目上不会运行测试
    • @ViLPy:哦,没有意识到这一点。我将从问题中删除该部分。很高兴,我能帮上忙。
    猜你喜欢
    • 2019-03-19
    • 2023-04-10
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 2016-07-28
    • 2017-03-22
    相关资源
    最近更新 更多