我如何评估sbt SettingsKey

时间:2013-08-08 09:57:00

标签: sbt

我想将sbt-release插件与Play框架结合使用。

插件从文件version.sbt中读取当前版本号。它的内容是

version in ThisBuild := "0.41.0-SNAPSHOT"

我想在我的主构建文件中使用此设置,但变量version的类型为sbt.SettingKey

有一个evaluate方法,但就我而言,我无法弄清楚要传递什么来获取我在version.sbt中定义的字符串。

2 个答案:

答案 0 :(得分:2)

我尝试了接受的答案的解决方案,但它没有编译。 (播放2.1.5)

[error]   (ss: sbt.Project.Setting[_]*)sbt.Project <and>
[error]   => Seq[sbt.Project.Setting[_]]
[error]  cannot be applied to (Seq[sbt.ModuleID])
[error]   val main = play.Project(appName).settings(appDependencies).settings(releaseSettings).settings(
[error]                                    ^
[error] one error found

相反,我提出了这个解决方案:

    ...
    lazy val appSettings = Defaults.defaultSettings ++ ... ++ releaseSettings

    val main = play.Project(appName, dependencies = appDependencies, settings = appSettings).settings(
      version <<= version in ThisBuild,
      ...
    )

答案 1 :(得分:0)

这是play.Project构造函数的一个小缺点,它不包括静态版本号,而不是设置键中的一个。

但是,唯一必需的参数是应用程序名称,因此您可以从以下内容切换:

val main = play.Project(appName, appVersion, appDependencies, settings = 
  Defaults.defaultSettings ++ releaseSettings ).settings(...)

val main = play.Project(appName).settings(appDependencies).
  settings(releaseSettings).settings(...)

通常,version.sbt中定义的版本应自动在此处获取。如果不是,您可以随时添加上述内容:

.settings(applicationVersion <<= version in ThisBuild)