当前位置:  开发笔记 > 编程语言 > 正文

sbt是否有类似gradle的processResources任务和ReplaceTokens支持?

如何解决《sbt是否有类似gradle的processResources任务和ReplaceTokens支持?》经验,为你挑选了1个好方法。

我们正在从Java/Gradle堆栈迁移到Scala/SBT.我们的gradle构建利用一个名为processResources的任务和一些名为ReplaceTokens的Ant过滤器来动态替换签入的.properties文件中的标记,而不实际更改.properties文件(只是更改输出).gradle任务看起来像:

processResources {
  def whoami = System.getProperty( 'user.name' );
  def hostname = InetAddress.getLocalHost().getHostName()
  def buildTimestamp = new Date().format('yyyy-MM-dd HH:mm:ss z')

  filter ReplaceTokens, tokens: [
          "buildsig.version" : project.version,
          "buildsig.classifier" : project.classifier,
          "buildsig.timestamp" : buildTimestamp,
          "buildsig.user" : whoami,
          "buildsig.system" : hostname,
          "buildsig.tag" : buildTag
      ]
}

此任务查找src/main/resources目录中的所有模板文件,执行必需的替换并在build/resources/main输出结果.换句话说,它转换了src/main/resources/buildsig.properties ...

buildsig.version=@buildsig.version@
buildsig.classifier=@buildsig.classifier@
buildsig.timestamp=@buildsig.timestamp@
buildsig.user=@buildsig.user@
buildsig.system=@buildsig.system@
buildsig.tag=@buildsig.tag@

...构建/ resources/main/buildsig.properties ......

buildsig.version=1.6.5
buildsig.classifier=RELEASE
buildsig.timestamp=2013-05-06 09:46:52 PDT
buildsig.user=jenkins
buildsig.system=bobk-mbp.local
buildsig.tag=dev

最终,它会进入WEB-INF/classes/buildsig.properties的WAR文件.这类似于冠军在属性文件中记录构建特定信息,该文件在运行时从类路径加载.

我在SBT做什么来完成这样的事情?我是Scala/SBT的新手所以请原谅我,如果这似乎是一个愚蠢的问题.在一天结束时,我需要的是从我构建的环境中提取一些信息并将该信息放入可在运行时加载的类路径的属性文件中.您可以提供任何有助于我完成此任务的见解,我们非常感谢.



1> Mark Harrah..:

sbt-buildinfo是一个不错的选择.该README显示了如何定义自定义映射和映射,应该在每次编译运行的例子.除了直接添加如此处version所示的常规设置外,您还需要这样的部分:

buildInfoKeys ++= Seq[BuildInfoKey](
    "hostname" -> java.net.InetAddress.getLocalHost().getHostName(),
    "whoami" -> System.getProperty("user.name"),
    BuildInfoKey.action("buildTimestamp") {
        java.text.DateFormat.getDateTimeInstance.format(new java.util.Date())
    }
)

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有