Playframework 如何将提交哈希添加到播放模板?

Playframework 如何将提交哈希添加到播放模板?,playframework,sbt,playframework-2.1,playframework-2.2,Playframework,Sbt,Playframework 2.1,Playframework 2.2,我想将提交散列放入Play框架模板文件中,以便通过REST-GET调用查看构建信息 在sbt中,我可以获得git提交散列和git分支名称,在构建过程中是否有任何方法将此信息放入模板文件中 构建.sbt name := "my-project" val branch = "git rev-parse --abbrev-ref HEAD".!!.trim val commit = "git rev-parse HEAD".!!.trim val buildTime = (new java.text

我想将提交散列放入Play框架模板文件中,以便通过REST-GET调用查看构建信息

在sbt中,我可以获得git提交散列和git分支名称,在构建过程中是否有任何方法将此信息放入模板文件中

构建.sbt

name := "my-project"

val branch = "git rev-parse --abbrev-ref HEAD".!!.trim
val commit = "git rev-parse HEAD".!!.trim
val buildTime = (new java.text.SimpleDateFormat("yyyyMMdd-HHmmss")).format(new java.util.Date())

version := "%s-%s-%s".format(branch, commit, buildTime)

我使用了一个名为sbt buildinfo的sbt插件来实现这一点。看看答案。从技术上讲,它奏效了。事实上,每次有任何变化,它都会重新加载整个项目。也许他们现在已经克服了这个问题?尝试一下sbt buildinfo:

用法示例:

lazy val root = (project in file("."))
  .enablePlugins(BuildInfoPlugin)
  .settings(
    buildInfoKeys := Seq[BuildInfoKey](
      <whateverYouWant>,
      BuildInfoKey.action("commit") {
        scala.sys.process.Process("git rev-parse HEAD").!!.trim
      }
    )
  )
lazy val root=(文件(“.”)中的项目)
.enablePlugins(BuildInfoPlugin)
.设置(
BuildInfoKey:=Seq[BuildInfoKey](
,
BuildInfoKey.action(“提交”){
scala.sys.process.process(“git rev解析头”)。!!.trim
}
)
)

添加我的丑陋解决方案以将git头哈希添加到构建:
(除了Bob Kuhar的回答中的链接)
我已经有了“lazy val root”,所以这就是它现在的样子

lazy val root = (project in file(".")).
  enablePlugins(PlayScala).
  enablePlugins(BuildInfoPlugin).
  settings(
    buildInfoKeys := Seq[BuildInfoKey](
      name, version, scalaVersion, sbtVersion,
      "hostname" -> java.net.InetAddress.getLocalHost().getHostName(),
      "whoami" -> System.getProperty("user.name"),
      "buildTimestamp" -> new java.util.Date(System.currentTimeMillis()),      
      "gitHash" -> new java.lang.Object(){
              override def toString(): String = {
                      try { 
                    val extracted = new java.io.InputStreamReader(
                              java.lang.Runtime.getRuntime().exec("git rev-parse HEAD").getInputStream())                         
                    (new java.io.BufferedReader(extracted)).readLine()
                      } catch {      case t: Throwable => "get git hash failed"    }
              }}.toString()
    ),
    buildInfoPackage := "buildpkg"
  )

如果能稍微扩展一下以包含一些代码,那就太好了。我现在还不清楚如何使用buildinfo来实现这一点(从自述文件中)。使用最新的sbt(1.0.2),我得到:
error:value!!不是字符串的成员
您可能需要查看sbt git stamp: