如何使用Scala对象的SBT IntegrationTest配置
为了使我们的多项目构建更易于管理,我们将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" ... } 不幸的是,这打破了构建:
我想我需要导入IntegrationTest配置.我尝试在Dependencies.scala中导入IntegrationTest配置: import sbt.Configurations.IntegrationTest IntegrationTest是Configurations对象中定义的延迟val: object Configurations { ... lazy val IntegrationTest = config("it") extend (Runtime) ... } 但这并没有解决问题. 有人知道如何解决这个问题吗? 解决方法
在将依赖项添加到Project对象之前,需要将配置添加到Project对象.
您的代码引用显示您正在执行前者,但您没有在引用的代码中显示您在后者的位置. 请你发布完整配置,或尝试将这两个配置相互移动? 这是将配置添加到您链接到的SBT文档中的Project对象的位置: lazy val root = (project in file(".")). configs(IntegrationTest). 您上面引用的代码声明了一个懒惰的val但是没有使用它是不足以让“it”配置使用: lazy val IntegrationTest = config("it") extend (Runtime) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |