在build.sbt文件中使用外部库

时间:2019-01-23 10:25:00

标签: scala sbt

是否可以在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
  // ... 
}

1 个答案:

答案 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是导入的包”)。