【发布时间】:2014-06-22 08:36:03
【问题描述】:
我有一个定义了集成测试配置的 sbt 项目。构建.scala:
lazy val root =
Project("root", file("."))
.configs( IntegrationTest )
.settings( Defaults.itSettings : _*)
build.sbt 有(除其他外):
libraryDependencies ++=Seq(
"org.scalatest" % "scala-test_2.10" % "1.0.8" % "test,it",
"com.typesafe" % "config" % "1.2.0")
现在我在src/main/resources 下有一个reference.conf 文件:
resources {
postgresAdapter {
db = "prod"
}
}
同样在src/it/resources:
resources {
postgresAdapter {
db = "integration"
}
}
我有以下课程:
class PostgresAdapter{
private val db = ConfigFactory.load.getConfig("resources").getString("postgresAdapter.db")
private def connection: Try[java.sql.Connection] = {
val _ = classOf[org.postgresql.Driver]
Try(DriverManager.getConnection(s"jdbc:postgresql://dbserver/$db", "user", "password"))
}
}
如果我做sbt run,我希望db 用prod 初始化,当我做sbt it:test 时用integration 初始化。
是否可以配置 sbt 和/或 Typesafe 配置以产生这种效果,或者我应该为此使用不同的方式?
PS:我想避免在投入生产的配置文件中包含 db_prod 和 db_integration 参数。
【问题讨论】:
-
您能否详细说明“配置”的含义?在 sbt 术语中,
IntegrationTest(又名it)和Test都称为配置。您的意思是根据配置生成相似但略有不同的文件吗? -
查看更新的问题。希望它更有意义
-
好的,现在对我来说很有意义。您在询问是否可以根据不同的 sbt 配置使用不同的 Typesafe 配置文件。 REAME 说“首先列出的优先级更高”。上述设置的当前行为是什么?不接
"integration"吗?
标签: scala sbt typesafe-config