是否可以在build.sbt
文件中使用外部库?
例如我想写这样的东西:
import scala.io.Source
import io.circe._ // not possible
version := myTask
lazy val myTask: String = {
val filename = "version.txt"
Source.fromFile(filename).getLines.mkString(", ")
// do some json parsing using the circe library
// ...
}
答案 0 :(得分:10)
我实际上喜欢sbt的一件事是,构建项目(在大多数情况下)只是另一个项目(该项目也可能由元构建项目配置的元构建项目配置,等等)。 )。这意味着您可以将以下行放入project/build.sbt
文件中:
libraryDependencies += "io.circe" %% "circe-jawn" % "0.11.1"
如果需要,还可以将其添加到plugins.sbt
或.sbt
目录中的任何其他projects
文件中,因为文件名(不包括扩展名)没有超出人类习惯的含义。 ,但我建议遵循约定并使用build.sbt
。
请注意,尽管sbt隐式导入了sbt.io
文件中的.sbt
,所以循环导入了您的build.sbt
(在根级别,即构建配置,而不是构建构建配置)将需要看起来像这样:
import _root_.io.circe.jawn.decode
scalaVersion := decode[String]("\"2.12.8\"").right.get
(对于以前从未见过的人,这里的_root_
只是意味着“在这里开始包的层次结构,而不是假设io
是导入的包”)。