scala - 如何让 SBT key 查看当前配置的设置?

标签 scala sbt

我有以下 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) :我真正想做的是改变javaOptionsIntegrationTest配置(b/c 我们启动一个服务,然后针对它运行测试代码,我希望被测试的服务在稍微沙盒的模式下运行)。设置 javaOptions in IntegrationTest很容易(和 show it:java-options 确认),但实际上并没有被 runner 使用除非我不厌其烦地明确定义 it:runner使用 it:java-options .我本来以为 *:runner更喜欢最具体的依赖变量。

最佳答案

我在 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))
    )
  }

}

关于scala - 如何让 SBT key 查看当前配置的设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17437443/

相关文章:

scala - 如何从证书链、证书和私钥正确配置 HTTPS?阿卡 HTTP

scala - 如何在 build.sbt 和 assembly.sbt 之间共享 vals

scala - 有没有办法在 IntelliJ 下为测试范围指定一个备用的 scalastyle-config.xml?

scala - 如何增加 scalacheck 控制台输出的字符列宽?

scala - 如何在 Scala 中模拟静态函数(对象函数,而不是类函数)

Java Akka Actors - 消息限制和优先级

scala - 获取 Scala 枚举实例

scala - 为 Scala 和 Playframework 中的嵌套类创建 QueryStringBindable

scala - 使用sbt run或sbt控制台的BufferedReader.readLine问题

scala - IntelliJ IDEA : Cannot import SBT project