代码之家  ›  专栏  ›  技术社区  ›  Florian Baierl

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

  •  6
  • Florian Baierl  · 技术社区  · 7 年前

    是否有可能在内部使用外部库 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 回复  |  直到 7 年前
        1
  •  12
  •   Travis Brown    7 年前

    实际上,我喜欢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