从Scala源访问SBT设置

cin*_*nsk 4 scala sbt

我想知道是否有可能从主要的scala源中读取设置键的值。

例如,我的build.sbt包含:

name := "hello"

version := "0.1"
Run Code Online (Sandbox Code Playgroud)

我想读的价值version,并name在我的Scala源文件(src/main/scala/*.scala)。这可能吗?

Eug*_*nev 5

您需要sbt-buildinfo(https://github.com/sbt/sbt-buildinfo)插件

buildInfoSettings

sourceGenerators in Compile <+= buildInfo

buildInfoKeys := Seq[BuildInfoKey](name, version, scalaVersion, sbtVersion)

buildInfoPackage := "hello"
Run Code Online (Sandbox Code Playgroud)

它将生成具有所需所有属性的scala文件,并且您可以从scala源访问它们

package hello

/** This object was generated by sbt-buildinfo. */
case object BuildInfo {
  /** The value is "helloworld". */
  val name = "helloworld"
  /** The value is "0.1-SNAPSHOT". */
  val version = "0.1-SNAPSHOT"
  /** The value is "2.10.3". */
  val scalaVersion = "2.10.3"

  .....
Run Code Online (Sandbox Code Playgroud)