2013-01-25 35 views
8

我想添加构建信息到我的Play的页脚!应用程序(Play!2.0.4 with Scala),与在此使用的stackoverflow类似。我是SBT的新手,很高兴大部分时间一切都像魅力一样。 :-)玩2.0:如何添加SBT内部版本号页面页脚

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

谢谢你的时间!

回答

2

我想出了一个bash脚本的扩展,它能够完成我的应用程序的实际分段和启动,因此在启动SBT/play之前就提供了构建信息。此扩展抓取Mercurial repo的工作目录修订版,并将当前日期写入文件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 [[email protected]]" 

这个脚本可以很容易地扩展到grep的应用程序版本的文件project/Build.scala,包括本中创建的构建信息。

随意复制/粘贴和改编/改进。不需要归属,但总是欢迎您提供反馈:-)

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 
    ) 
相关问题