在 global.sbt 的 sbt 构建文件中包含一个简单的 val

Include a simple val in sbt build files from global.sbt

我希望通过单个包含文件跨多个 build.sbt 文件在外部设置我的版本号。

在build.sbt之内我可以做到

val base = "1.1"

version := base + ".8-SNAPSHOT"

这作为第一步效果很好。

根据联机帮助,我应该可以在我的 ~/.sbt/0.13 文件夹中创建一个文件 global.sbt

我用单行

创建了文件global.sbt
val base = "1.1"

并从 build.sbt

中删除了相应的行

但是当我启动我的 sbt 时,我得到 "error: not found: value base"

所以要么它没有找到全局 sbt,要么这种形式的全局设置不起作用。

关于如何解决这个问题有什么建议吗?

我可以在我的 build.sbt 文件中使用明确的包含命令吗?

从您的测试看来,全局 ~/.sbt/0.13/*.sbt 文件中的 vals 不会传播到本地 *.sbt 文件。

这是一个有效的设置:

~/.sbt/0.13/plugins/VersionBasePlugin.scala

import sbt._, Keys._

object VersionBasePlugin extends AutoPlugin {
  override def requires = plugins.CorePlugin
  override def trigger = allRequirements

  object autoImport {
    val versionBase = settingKey[String]("version base")
  }
  import autoImport._

  override def projectSettings = Seq(versionBase := "1.1")
}

然后在你的 build.sbt:

version := (versionBase.value + ".8-SNAPSHOT")

这对你有用吗?