gpt4 book ai didi

scala - 如何从 Scala 对象使用 SBT IntegrationTest 配置

转载 作者:行者123 更新时间:2023-12-01 05:06:22 27 4
gpt4 key购买 nike

为了使我们的多项目构建更易于管理,我们将 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: Cannot add dependency 'junit#junit;4.11' to configuration 'it' of module ... because this configuration doesn't exist!



我想我需要导入 IntegrationTest 配置。我尝试在 Dependencies.scala 中导入 IntegrationTest 配置:
import sbt.Configurations.IntegrationTest

IntegrationTest 是一个在 Configurations 对象中定义的惰性值:
object Configurations {
...
lazy val IntegrationTest = config("it") extend (Runtime)
...
}

但这并没有解决问题。

有人知道如何解决这个问题吗?

最佳答案

您需要将配置添加到 Project在将依赖项添加到 Project 之前的对象目的。

您的代码引用显示您在执行前者,但您没有在引用的代码中显示您在执行后者的位置。

请您发布完整的配置,或者尝试将这两个相互移动?

这是将配置添加到 Project 的地方您链接到的 SBT 文档中的对象:

lazy val root = (project in file(".")).
configs(IntegrationTest).

您上面引用的代码声明了一个惰性 val 但不使用它不足以让“它”配置投入使用:
lazy val IntegrationTest = config("it") extend (Runtime)

关于scala - 如何从 Scala 对象使用 SBT IntegrationTest 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28174712/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com