首页 > 解决方案 > 在 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
  // ... 
}

标签: scalasbt

解决方案


我真正喜欢 sbt 的一件事是构建项目(在大多数情况下)只是另一个项目(也可能由元元构建项目配置的元构建项目等配置)。这意味着您只需将以下行放入project/build.sbt文件中:

libraryDependencies += "io.circe" %% "circe-jawn" % "0.11.1"

plugins.sbt如果需要,您也可以将其添加到目录中的任何其他.sbt文件中projects,因为文件名(不包括扩展名)在人类约定之外没有任何意义,但我建议遵循约定并使用build.sbt.

请注意,尽管 sbt 隐式导入文件,因此您(在根级别 - 即构建配置,而不是构建构建配置)中的 circe 导入sbt.io将需要如下所示:.sbtbuild.sbt

import _root_.io.circe.jawn.decode

scalaVersion := decode[String]("\"2.12.8\"").right.get

(对于以前没有见过它的人,_root_这里只是意味着“从这里开始包层次结构,而不是假设io是导入的”。)


推荐阅读