如何在Scala程序中访问sbt托管资源

时间:2015-01-29 18:04:35

标签: scala sbt

我通过build.sbt中的以下代码创建了一个托管资源:

resourceGenerators in Compile <+=
  (resourceManaged in Compile, name, version) map { (dir, n, v) =>
    val file = dir / "version"
    val contents = Process("git rev-parse HEAD").lines.head
    IO.write(file, contents)
    Seq(file)
  }

我可以在target/scala-2.11/resource_managed/main

下看到它

我在我的应用程序中提取其内容如下:

  val version = getClass.getResource("version")
  println(Source.fromURL(version).mkString)

我想知道是否有用于访问资源的Scala类,这比Java getClass.getResource

更可取。

1 个答案:

答案 0 :(得分:1)

正如我在评论中所写,我认为这是正确的方法,Scala中没有其他等效方法。

但是,我建议您查看sbt-buildinfo插件,在您的情况下允许您将版本字符串直接放在合成的Scala对象中。