scala - 在 build.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
// ...
}
解决方案
我真正喜欢 sbt 的一件事是构建项目(在大多数情况下)只是另一个项目(也可能由元元构建项目配置的元构建项目等配置)。这意味着您只需将以下行放入project/build.sbt
文件中:
libraryDependencies += "io.circe" %% "circe-jawn" % "0.11.1"
plugins.sbt
如果需要,您也可以将其添加到目录中的任何其他.sbt
文件中projects
,因为文件名(不包括扩展名)在人类约定之外没有任何意义,但我建议遵循约定并使用build.sbt
.
请注意,尽管 sbt 隐式导入文件,因此您(在根级别 - 即构建配置,而不是构建构建配置)中的 circe 导入sbt.io
将需要如下所示:.sbt
build.sbt
import _root_.io.circe.jawn.decode
scalaVersion := decode[String]("\"2.12.8\"").right.get
(对于以前没有见过它的人,_root_
这里只是意味着“从这里开始包层次结构,而不是假设io
是导入的”。)
推荐阅读
- flutter - 扑腾解析平台中的订阅.on('open')等效项
- google-cloud-platform - Terraform 不应用我的分支的更改
- python - 仅列出 OneToOneField Django 中的特定值
- java - 更改条件内的数据类型
- gimp - 如何使用 python-fu 重命名图层
- java - Springboot应用程序启动后出现错误
- flutter - 单选列表平铺填充在颤动中不起作用
- flutter - 在堆栈下方添加小部件
- javascript - 在 mongoDB 中按天、周或月过滤数据
- laravel - 如何根据 Laravel 中的另一个切换显示最小值和最大值