0

我想将sbt-release插件与 Play 框架结合起来。

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

version in ThisBuild := "0.41.0-SNAPSHOT"

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

有一种evaluate方法,但是对于我的一生,我无法弄清楚要传递什么来获取我在version.sbt.

4

2 回答 2

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,
      ...
    )
于 2013-10-02T08:07:51.607 回答
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)
于 2013-08-08T12:22:25.097 回答