2017-04-04 29 views
2

在SBT中解析某些變量並將其存儲到資源文件的最簡單方法是什麼,以便它可以在運行時使用?將SBT變量寫入資源

更具體地說:我怎樣才能得到version值由sbt-git插件,使其不僅可作爲神器/裝配JAR名稱的一部分,也是內部資源目錄設置,這樣我就可以在運行時訪問它,例如在輸出上打印,還是通過我的Web服務的某個版本端點作爲服務版本返回?

回答

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) 
}⏎ 
+0

謝謝!作爲sbt-git與sbt-git有什麼區別的一個小記錄,是我們可以將'version.value'直接存儲到文件中,因爲sbt-git已經負責檢查它是否被釋放(通過標記)是否爲快照等。但是這個答案不僅對sbt-git用戶有用:) –

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