Play 2.0:如何将SBT内部版本号添加到页脚

时间:2013-01-25 05:49:29

标签: playframework-2.0 sbt

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

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

感谢您的时间!

2 个答案:

答案 0 :(得分:2)

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

#!/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,并将其包含在创建的构建信息中。

随意复制/粘贴并适应/改进。不需要归属,但欢迎提供反馈意见: - )

答案 1 :(得分:1)

在编译时向项目添加构建信息的一种简单方法是使用名为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
    )