【发布时间】:2015-03-26 07:37:19
【问题描述】:
为了使我们的多项目构建更易于管理,我们将 Build.scala 文件拆分为多个文件,例如Dependencies.scala 包含所有依赖项:
import sbt._
object Dependencies {
val slf4j_api = "org.slf4j" % "slf4j-api" % "1.7.7"
...
}
我们想在我们的构建中添加集成测试。在SBT documentation之后我们添加了
object Build extends sbt.Build {
import Dependencies._
import BuildSettings._
import Version._
import MergeStrategies.custom
lazy val root = Project(
id = "root",
base = file("."),
settings = buildSettings ++ Seq(Git.checkNoLocalChanges, TestReport.testReport)
).configs(IntegrationTest).settings(Defaults.itSettings: _*)
...
}
其中 Dependencies、BuildSettings、Version 和 MergeStrategies 是在它们自己的文件中定义的自定义 Scala 对象。
按照文档,我们要在 Dependencies.scala 中为 IntegrationTest 配置添加一些依赖项:
import sbt._
object Dependencies {
val slf4j_api = "org.slf4j" % "slf4j-api" % "1.7.7"
val junit = "junit" % "junit" % "4.11" % "test,it"
...
}
不幸的是,这破坏了构建:
java.lang.IllegalArgumentException:无法添加依赖项 'junit#junit;4.11' 来配置模块的'it' ... 因为这个配置不存在!
我想我需要导入 IntegrationTest 配置。我尝试在 Dependencies.scala 中导入 IntegrationTest 配置:
import sbt.Configurations.IntegrationTest
IntegrationTest 是在 Configurations 对象中定义的惰性验证:
object Configurations {
...
lazy val IntegrationTest = config("it") extend (Runtime)
...
}
但这并没有解决问题。
有人知道如何解决这个问题吗?
【问题讨论】:
-
您提到您遵循“SBT 文档”,您能否提供指向您使用的确切文档的链接?
标签: scala sbt integration-testing