9

我有以下内容build.sbt

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

scalaVersion := "2.10.4"

Defaults.itSettings

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

如何使添加IntegrationTest 配置的行更简单?

我希望一个具有项目当前配置和设置的设置,例如

settings ++= Defaults.itSettings

configs += IntegrationTest

甚至使用itSettingssbt 文件中的以下行自动应用设置:

configs += IntegrationTest
4

3 回答 3

5

我发现自己同样感到沮丧。我发现的最佳解决方案是借鉴 Josh Suereth 的Effective SBT 幻灯片,并创建一个项目帮助函数,为您添加 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")
于 2013-12-14T17:45:11.783 回答
2

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

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

于 2013-10-31T12:39:24.567 回答
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)
于 2013-10-31T19:36:46.810 回答