在 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
文件中的 val
s 不会传播到本地 *.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")
这对你有用吗?
我希望通过单个包含文件跨多个 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
文件中的 val
s 不会传播到本地 *.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")
这对你有用吗?