scala - 将 SBT 变量写入资源

标签 scala sbt

在 SBT 中解析某些变量并将其存储到资源文件以便在运行时可用的最简单方法是什么?

更具体地说:我怎样才能获得 sbt-git 插件设置的 version 值,并使其不仅作为工件/程序集 JAR 名称的一部分可用,而且也在资源目录中,所以我可以在运行时访问它,例如在输出上打印,或通过我的 Web 服务的某个版本端点作为服务版本返回?

最佳答案

这是我的代码,用于从纯 git 获取提交并将其与项目版本一起存储在属性文件 path/to/version.properties 可用在包 path.to 中:

resourceGenerators in Compile <+= Def.task {
  import scala.sys.process._
  val file = (resourceManaged in Compile).value / "path" / "to" / "version.properties"
  val gitHash = "git rev-parse HEAD".!!
  val gitStatus = "git status".!!
  IO.writeLines(file, Seq(
    s"project.version = ${version.value}",
    s"git.hash = $gitHash",
    s"build.date = ${new java.util.Date()}") ++
    gitStatus.split("\n").map("#" + _))
  Seq(file)
}⏎  

关于scala - 将 SBT 变量写入资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43212986/

相关文章:

performance - 在 Scala 组合器解析器中访问位置信息会降低性能

scala - 将时间戳转换为间隔

scala - Traversable 是一个特征还是一个类

scala - sbt导入本地库

playframework - 如何在 Play 2.3 中更改 .activator .sbt .ivy 文件夹的位置?

scala - 使用类型为编译时检查的任意约束建模

scala - 如何从 Scala 中的 Some() 中提取值

scala - 在 Play 中通过 "activator run"运行时获取要编译的资源

scala - SBT:如何从程序集中排除源文件和文档?

intellij-idea - IntelliJ - 无法从链中的任何提供商加载 AWS 凭证