build.sbt の中で application.conf の内容を使いたいことがあります。例えば flyway-sbt の flywayUrl や flywayUser は、アプリケーションで使っている設定と同じものを使いたいことが多いと思います。
このような場合、普通に build.sbt の中で
...
libraryDependencies ++= Seq(
...
libraryDependencies += "com.typesafe" % "config" % "1.2.1"
)
import com.typesafe.config.ConfigFactory
...
としても com.typesafe.config.ConfigFactory
が見つからないよと言われてしまいますが、
project ディレクトリの中に foobar.sbt という下の内容のファイルを作れば、build.sbt の中で com.typesafe.config をインポートできるようになります。
libraryDependencies += "com.typesafe" % "config" % "1.2.1"
例えば、
import com.typesafe.config.ConfigFactory
val conf = ConfigFactory.parseFile(new File("src/main/resources/application.conf"))
flywayUrl := conf.getString("db.default.url")
flywayUser := conf.getString("db.default.user")
こんなかんじにすれば application.conf を読み込んで使えるようになります (ConfigFactory.load()
では読み込んでくれなかったので ConfigFactory.parseFile(..)
を使っています)。
$ cat src/main/resources/application.conf
db.default.url="jdbc:h2:file:default"
db.default.user="sa"
...
$ sbt
> show flywayUrl
[info] jdbc:h2:file:default
ちゃんと読み込まれています。
参考: http://stackoverflow.com/questions/15425609/sbt-cant-resolve-dependency-in-build-definition