在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用戶有用:) –