gpt4 book ai didi

sbt - 如何从任务中的文件读取数据并使用它来设置另一个设置?

转载 作者:行者123 更新时间:2023-12-01 02:13:02 24 4
gpt4 key购买 nike

我们正在将我们的应用程序迁移到 Play Framework .我们一直在使用 gradle 构建系统,但在 sbt 方面遇到了一些问题。

我们使用 jooq 作为我们的数据库,这意味着我们的构建文件需要包含数据库用户名/密码(因为 jooq 通过读取 db 模式生成代码)。由于这不是一个好主意,所有敏感数据都存储在构建可能运行的每个主机上的 protected 文件中,构建系统从文件中读取,然后相应地配置系统。在 gradle 中它非常简单,但我在 sbt 上遇到了死胡同。这是我到目前为止所拥有的:

import org.json4s._
import org.json4s.native.JsonMethods.

val jsonBuildConfig = TaskKey[JValue]("json-build-config")

jsonBuildConfig := {
val confLines = scala.io.Source.fromFile("/etc/application.conf").mkString
parse(confLines)
}

jooqOptions := Seq(
"jdbc.driver" -> "org.postgresql.Driver",
"jdbc.url" -> "FIXME",
"jdbc.user" -> "FIXME",
"jdbc.password" -> "FIXME"
)

问题是三个配置参数,用 FIXME作为它们在 jooqOptions 中的当前值, 需要从文件中选取。

jsonBuildConfig , 我可以做这个:

val confLines = scala.io.Source.fromFile("/etc/application.conf").mkString
val jsonConf = parse(confLines)
(jsonConf / "stagingdb" / "url").values

但是我如何在 jooqOptions 中设置它配置?

最佳答案

如果我正确理解了您的问题,您需要 jooqOptions值取决于 jsonBuildConfig 的值.有一个关于这里的部分:

http://www.scala-sbt.org/0.13.5/docs/Getting-Started/More-About-Settings.html

基本上,你会想要使用 <<=而不是 :=设置 jooqOptions ,例如

jooqOptions <<= jsonBuildConfig.apply { jsonConf =>
val dbSettings = jsonConf / "stagingdb"
val dbUrl = dbSettings / "url"
val dbUser = ...
...
Seq("jdbc.driver" -> "...", "jdbc.url" -> dbUrl, ...)
}

对于较新版本的 SBT,您可以避免 setting.apply{...}调用模式 setting.value在设置初始值设定项块中,例如
jooqOptions := {
val dbSettings = jsonBuildConfig.value / "stagingdb"
...
}

我链接到 SBT 0.13.5 的文档,它确实支持 .value特征。仔细检查您使用的是哪个版本的 SBT,然后打开相应的文档页面以查看它是否支持该功能。

关于sbt - 如何从任务中的文件读取数据并使用它来设置另一个设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27584097/

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