我想将构建信息添加到我的Play的页脚中!应用程序(Play!2.0.4 with Scala),类似于stackoverflow上的完成。我是SBT的新手,很高兴大多数时候一切都像魅力一样。 : - )
基本上,我想从project/Build.scala
中提取应用程序版本,添加当前日期,最后添加一个内部版本号(自动递增,但这可能是要发布的另一个问题的主题)。此信息应添加到主conf/build-info.conf
中包含的文件conf/application.conf
中。我知道如何从应用程序配置中提取构建信息并将其添加到页面中。
感谢您的时间!
答案 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版本选择合适的版本,然后按照说明操作。默认情况下,只有您的应用程序name
,version
,scalaVersion
和sbtVersion
在编译时记录。
要添加build time
,dependencies
或任何其他自定义值,您可以将此代码添加到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
)