如何在 SBT/Scala build 的构建时访问库依赖项?

How to access library dependencies at build-time in SBT/Scala build?

例如,假设我有一个生成 "managed" 源代码的文件 project/CodeGeneration.scala,并假设对象 (CodeGeneration) 需要利用第三方库 --说 jsoup...

import org.jsoup._

object CodeGeneration {
  def generateCode = /* Generate code using jsoup... */
}

简单地在 build.sbt 中的 libraryDependencies 中添加一行 jsoup 并不能解决问题;它会导致编译错误,抱怨缺少 jsoup object/namespace.

那么,(如何)可以从 "meta" 代码访问此依赖项——生成其他代码的代码?

似乎解决方案是利用 sbt 的 "recursive" 特性,并在 project 目录中放置一个额外的 build.sbt 文件。因此,例如,project/build.sbt 可能如下所示:

libraryDependencies += "org.jsoup" % "jsoup" % "1.11.2"

有更多详细信息 in sbt's official documentation