Scalaでビルド時の情報をアプリで保持する

satoyamaが2014/09/17 12:55:39に投稿

Scalaでビルド時の情報をアプリで保持する

sbt-buildinfo を利用するとよい。

基本的には github の READMEを参照すればよい。

build.sbtの関連がありそうな箇所を晒す。

import sbtbuildinfo.Plugin.BuildInfoKey

name := "MyApp"

version := "1.0.1"

scalaVersion := "2.10.4"

buildInfoSettings

sourceGenerators in Compile <+= buildInfo

buildInfoKeys := Seq[BuildInfoKey](name, version, scalaVersion, sbtVersion, 
  BuildInfoKey.action("builtAt"){
    import java.util.Date
    import java.text.SimpleDateFormat
    (new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX").format( new Date() ) )
  }
)

buildInfoPackage := "my.app"

これと、project/plugins.sbtに以下を追記。

addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.3.1")

アプリ中では以下の様に利用する。

package my.app
(中略)
  log.info(s"Start ${BuildInfo.name} ${BuildInfo.version}, compiled by Scala ${BuildInfo.scalaVersion} / SBT ${BuildInfo.sbtVersion}, at ${BuildInfo.builtAt}")

ちなみに、生成されるソースは

target/scala-2.10/src_managed/main/sbt-buildinfo/BuildInfo.scala

に出力される。