8

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

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

感谢您的时间!

4

2 回答 2

2

我想出了一个bash脚本的扩展,它执行我的应用程序的实际登台和启动,从而在开始 SBT / 播放之前提供构建信息。此扩展从 repo 中获取工作目录的修订版,并将Mercurial其与当前日期一起写入文件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,并将其包含在创建的构建信息中。

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

于 2013-01-25T08:07:41.853 回答
1

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

首先根据您的 SBT 版本选择合适的版本,然后按照说明进行操作。默认情况下,只有您的应用程序name、、version和在编译时记录scalaVersionsbtVersion

要添加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
    )
于 2016-03-09T11:29:11.797 回答