gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 17:58:59 24 4
gpt4 key购买 nike

我们正在从 Java/Gradle 堆栈迁移到 Scala/SBT。我们的 gradle 构建正在利用一个名为 processResources 的任务和一些名为 ReplaceTokens 的 Ant 过滤器来动态替换 checkin 的 .properties 文件中的 token ,而无需实际更改 .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 的新手,所以如果这似乎是一个愚蠢的问题,请原谅我。归根结底,我需要一种从我构建的环境中提取一些信息并将这些信息放入一个属性文件中的方法,该文件在运行时可以加载类路径。非常感谢您提供的任何见解来帮助我完成这项工作。

最佳答案

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())
}
)

关于sbt - sbt 是否有类似 gradle 的 processResources 任务并支持 ReplaceTokens?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16491347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com