我正在尝试使用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
root中的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配置看起来正确
答案 0 :(得分:2)
playScalaSettings
包含大多数路径的设置。这包括将测试源设置为路径/test
(请参阅default settings in doc)。但是,在您的布局中,测试源位于src/test
。所以sbt不会在测试中查找这些文件。
如果您的模块是播放项目,则相应地更改文件夹布局或配置路径以匹配您的布局。如果不删除playScalaSettings
行。
您可以像这样设置测试源路径:
scalaSource in Test <<= baseDirectory / "src" / "test" / "scala"