这适用于 Scala 2.11.1 和 sbt 0.13.5。
假设我有一个 Scala/sbt 项目,其目录结构如下:
root/
build.sbt
src/ ..
project/
plugins.sbt
build.properties
LolUtils.scala
我想在
LolUtils.scala
中使用一些外部库。在 sbt 中这通常是如何实现的?
如果我只是通过
build.sbt
将我需要的库添加到 libraryDependencies += ..
中,那么它找不到它们,并且在导入行上失败,并显示 not found: object ..
。
如果我添加一个单独的
project/build.sbt
,由于某种原因它开始无法解析我的插件,而且我需要在嵌套的project/build.sbt
中手动指定Scala版本,这是不必要的重复。
实现这一目标的最佳方法是什么?
sbt 是递归的,这意味着它使用自身来编译构建定义,即
*.sbt
目录下的 *.scala
文件和 project
文件。要添加额外的依赖项以在构建定义中使用它们,您必须在 project/build.sbt
中声明它们。
对此有一个警告。您可以为您的项目设置任何
scalaVersion
,即在build.sbt
中,但您不应修改scalaVersion
中的project/build.sbt
,因为它可能与sbt
本身使用的版本冲突(可能会或可能不会导致插件的二进制不兼容)。
Sbt 0.13.5 使用 Scala 2.10.4,您要使用的库必须与该特定版本的 Scala 兼容。
> about
[info] This is sbt 0.13.5
...
[info] sbt, sbt plugins, and build definitions are using Scala 2.10.4