什么是sbt 0.13.x中IntegrationTest配置的最小设置?

时间:2013-10-21 22:42:54

标签: sbt

我有以下build.sbt

name := "it-config-sbt-project"

scalaVersion := "2.10.4"

Defaults.itSettings

lazy val `it-config-sbt-project` = project.in(file(".")).configs(IntegrationTest)

我怎样才能使我添加the IntegrationTest configuration的行更简单?

而非喜欢使用项目的当前配置和设置进行设置,例如

settings ++= Defaults.itSettings

configs += IntegrationTest

甚至自动应用itSettings设置,并在sbt文件中使用以下行:

configs += IntegrationTest

3 个答案:

答案 0 :(得分:5)

我发现自己同样感到沮丧。我找到的最佳解决方案是借用Josh Suereth的Effective SBT slides并创建一个项目助手函数,为您添加IntegrationTest配置。

例如

object BasePlugin extends Plugin {
  val baseSettings = Defaults.itSettings

  def baseProject(name: String, location: String = "."): Project = (
    Project(name, file(location)) configs(IntegrationTest)
  )
}

我把这个以及其他一些设置作为插件,然后我的build.sbt就像

一样简单
import caoilte.BasePlugin

BasePlugin.baseSettings

val helloWorld = BasePlugin.baseProject("helloWorld")

答案 1 :(得分:2)

在评估设置之前,sbt需要知道委派的配置。因此,无法在设置系统中定义配置。

请注意,如果使用的配置不是extend其他配置,则不一定要使用configs方法在项目中注册它。

答案 2 :(得分:1)

我假设您使用SBT 0.13,因为您的项目定义在.sbt文件中。

有一项名为autoSetting的新功能可用于影响多个sbt文件中的组合.sbt设置。

http://www.scala-sbt.org/0.13.0/docs/Community/ChangeSummary_0.13.0.html#control-over-automatically-added-settings

一个例子是:

lazy val `it-config-sbt-project` = project.in(file("."))
  .autoSettings(userSettings, allPlugins, sbtFiles(file("../mysetting.sbt")), defaultSbtFiles)