playframework 2.0 - play 2.0:如何将SBT内部版本号添加到页面页脚



我想将构建信息添加到我的Play!应用程序的页脚(Play!2.0.4 with Scala),类似于在stackoverflow上所做的。我是SBT的新手,很高兴大多数时候一切都像魅力一样工作。:-)

基本上,我想从project/Build.scala中提取应用程序版本,添加当前日期,最后添加一个内部版本号(自动递增,但这可能是另一个问题的主题)。此信息应添加到包含在主conf/application.conf中的文件conf/build-info.conf中。我知道如何从应用程序配置中提取构建信息并将其添加到页面中。

谢谢你的时间!

我想出了bash脚本的扩展,该扩展执行应用程序的实际暂存和启动,从而在启动SBT/play之前提供构建信息。此扩展从Mercurial存储库中获取工作目录的修订版,并将其与当前日期一起写入文件conf/build-info.conf。我没有使用自动递增的构建计数器,因为存储库提供的信息应该足够了。

#!/bin/bash
CHANGESET=`hg tip | grep changeset`
while IFS=":" read -ra PARTS; do
    REV=`echo "${PARTS[1]}" | tr -d ' '`@`hg branch`
    echo application.build="`date +"%Y-%m-%d"` "[$REV]"" > conf/build-info.conf
done <<< "$CHANGESET"

导致文件包含类似于

application.build="2013-01-25 [98@bug-001]"

可以轻松扩展此脚本以grep应用程序版本的文件project/Build.scala,并将其包含在创建的生成信息中。

随意复制/粘贴和调整/改进。无需署名,但始终欢迎在此处提供反馈:-)

在编译时向项目添加构建信息的一种简单方法是使用名为 sbt-buildinfo 的 SBT 插件。

首先根据您的 SBT 版本选择正确的版本,然后按照说明进行操作。 默认情况下,在编译时仅记录应用程序nameversionscalaVersionsbtVersion

要添加 build timedependencies 或任何其他自定义值,您可以将以下代码添加到build.sbt并对其进行自定义:

    buildInfoKeys ++= Seq[BuildInfoKey](
      resolvers,
      libraryDependencies in Test,
      BuildInfoKey.map(name) { case (k, v) => "project" + k.capitalize -> v.capitalize },
      "custom" -> 12345, // computed at project load time
      BuildInfoKey.action("buildTime") {
        System.currentTimeMillis
      } // re-computed each time at compile
    )

最新更新