在SBT中解析某些变量并将其存储到资源文件的最简单方法是什么,以便它可以在运行时使用?将SBT变量写入资源
更具体地说:我怎样才能得到version
值由sbt-git
插件,使其不仅可作为神器/装配JAR名称的一部分,也是内部资源目录设置,这样我就可以在运行时访问它,例如在输出上打印,还是通过我的Web服务的某个版本端点作为服务版本返回?
在SBT中解析某些变量并将其存储到资源文件的最简单方法是什么,以便它可以在运行时使用?将SBT变量写入资源
更具体地说:我怎样才能得到version
值由sbt-git
插件,使其不仅可作为神器/装配JAR名称的一部分,也是内部资源目录设置,这样我就可以在运行时访问它,例如在输出上打印,还是通过我的Web服务的某个版本端点作为服务版本返回?
这是我正从纯git
提交,并连同属性中的版本项目的存储代码文件path/to/version.properties
可在包path.to
:
resourceGenerators in Compile <+= Def.task {
import scala.sys.process._
val file = (resourceManaged in Compile).value/"path"/"to"/"version.properties"
val gitHash = "git rev-parse HEAD".!!
val gitStatus = "git status".!!
IO.writeLines(file, Seq(
s"project.version = ${version.value}",
s"git.hash = $gitHash",
s"build.date = ${new java.util.Date()}") ++
gitStatus.split("\n").map("#" + _))
Seq(file)
}⏎
最简单的方法通常使用的是sbt-buildinfo插件。
在你project/plugins.sbt
:
addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.6.1")
添加下面你build.sbt:
enablePlugins(BuildInfoPlugin)
buildInfoKeys := Seq[BuildInfoKey](name, version, scalaVersion, sbtVersion)
buildInfoPackage := "hello"
重装后并编译它产生的BuildInfo.scala
,它允许您访问您在配置任何设置运行时为buildInfoKeys
。
谢谢!作为sbt-git与sbt-git有什么区别的一个小记录,是我们可以将'version.value'直接存储到文件中,因为sbt-git已经负责检查它是否被释放(通过标记)是否为快照等。但是这个答案不仅对sbt-git用户有用:) –