4

我有以下build.sbt文件:

version := "0.0.1"

version in Test := "0.0.1-DEBUG"

name <<= (version) apply { v:String => "demo-%s".format(v) }

虽然版本似乎在“测试”配置中是正确的,

> show test:version
[info] 0.0.1-DEBUG

这个名字似乎没有看更具体的设置。

> show name
[info] demo-0.0.1
> show test:name
[info] demo-0.0.1

这显然是我真正想要做的一个大大简化的例子,但我认为它说明了问题/误解。

编辑(2013-07-04):我真正想做的是改变javaOptions配置IntegrationTest(b / c我们启动一个服务,然后针对它运行测试代码,我希望被测试的服务运行在稍微沙盒模式下)。设置javaOptions in IntegrationTest很容易(并show it:java-options确认),但实际上并没有被使用,runner除非我去明确定义it:runner使用的麻烦it:java-options。我本来希望*:runner更喜欢最具体的依赖变量。

4

2 回答 2

2

我在 sbt 0.11 和 0.12.1 中尝试了这个并且它有效:

version := "0.0.1"

version in Test := "0.0.1-DEBUG"

name <<= (version) apply { v:String => "demo-%s".format(v) }

name in Test <<= (version in Test) apply { v:String => "demo-%s".format(v) }

更新

如果您使用的是 Build.scala 文件,则可以跨项目推广此任务。这是一个例子:

import sbt._
import sbt.Keys._

object DemoBuild extends Build {

  lazy val demo = Project(
    id = "demo",
    base = file("."),
    settings = Project.defaultSettings ++ Seq(
      organization := "com.demo",
      scalaVersion := "2.10.0"
    ) ++ addNameAndVersion("0.0.1", "demo")
  )


  def addNameAndVersion(projectVersion:String, projectName:String):Seq[sbt.Project.Setting[_]] = {
    Seq(
      version := projectVersion,
      version in Test :=  projectVersion + "-DEBUG",
      name <<= version.apply(s => "%s-%s".format(projectName, s)),
      name in Test <<=  (version in Test).apply(s => "%s-%s".format(projectName, s))
    )
  }

}
于 2013-07-03T01:29:26.990 回答
2

这是@MarkHarrah 建议Build.scala使用的翻译版本:inConfig

import sbt._
import sbt.Keys._

object DemoBuild extends Build {

  val mySettings = Seq(
    name <<= version { v => "demo-%s".format(v) }
  )

  lazy val demo = Project(
    id = "demo",
    base = file("."),
    settings = Project.defaultSettings ++ Seq(
      organization := "com.demo",
      scalaVersion := "2.10.0",
      version := "0.0.1",
      version in Test <<= version { v => "%s-DEBUG".format(v) }
    ) ++ mySettings
      ++ inConfig(Test)(mySettings)
  )
}
于 2013-07-05T00:51:01.023 回答