我想将sbt-release插件与 Play 框架结合起来。
插件从文件中读取当前版本号version.sbt
。它的内容是
version in ThisBuild := "0.41.0-SNAPSHOT"
我想在我的主构建文件中使用这个设置,但变量version
的类型是sbt.SettingKey
.
有一种evaluate
方法,但是对于我的一生,我无法弄清楚要传递什么来获取我在version.sbt
.
我想将sbt-release插件与 Play 框架结合起来。
插件从文件中读取当前版本号version.sbt
。它的内容是
version in ThisBuild := "0.41.0-SNAPSHOT"
我想在我的主构建文件中使用这个设置,但变量version
的类型是sbt.SettingKey
.
有一种evaluate
方法,但是对于我的一生,我无法弄清楚要传递什么来获取我在version.sbt
.
我尝试了接受的答案的解决方案,但它没有编译。(播放 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,
...
)
这是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)