在SBT中解析某个变量并将其存储到资源文件中最简单的方法是什么,以便它可以在运行时中使用?
更具体地说:如何通过version
插件获取sbt-git
值,并使其不仅可用作工件/程序集JAR名称的一部分,还可以在资源目录中使用,因此我可以在运行时访问它,例如在输出上打印,或通过我的Web服务的某个版本端点作为服务版本返回?
答案 0 :(得分:4)
这是我从普通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)
}⏎
答案 1 :(得分:2)
最简单的方法通常是使用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
中配置的任何设置。