我正在尝试使用 sbt 的直接 dependsOn
功能以及托管在 Github 上的 git 存储库(“项目 A”)。我正在使用稳定的标签引用,并且在我的测试项目(“项目 B”)中,sbt 确实从源代码克隆项目 A 并开始编译。然而,编译失败,项目 A 自己的依赖项似乎丢失了(即它似乎没有获取项目 A 的 build.sbt
中定义的任何内容)。
这与 maven/ivy 管理的依赖项不同吗?我是否需要在我的子项目 B 中包含所有传递依赖项?我听起来有点奇怪。这会毁掉整个工作,因为我有十几个项目 A 所依赖的库。
举例说明:
项目 A(在 Github 上作为源在线):
// build.sbt:
version := "1.2.3"
libraryDependencies += "org.foo" %% "bar" % "1.0"
项目 B(本地):
// project/Build.scala
import sbt._
import Keys._
object Build extends sbt.Build {
lazy val projA = RootProject(uri("git://github.com/me/projA.git#v1.2.3"))
lazy val projB = Project(id = "project-B", base = file(".").dependsOn(projA)
}
这样:
[info] Compiling 678 Scala sources to /Users/me/.sbt/staging/
5666eafa865fdf605be3/target/scala-2.10/classes...
[error] /Users/me/.sbt/staging/5666eafa865fdf605be3/src/main/scala/com/me/
BarKeeper.scala:3: not found: object bar
[error] import org.foo.bar
[error] ^
那么我是否必须重新声明对 "org.foo"%% "bar"% "1.0"
的库依赖项?我希望不会!
最佳答案
这纯粹是我自己的错,不是 sbt 的错。我在项目 A 中监督了一个非托管库(文件夹 lib
)。将其交换为 Maven 托管版本(文件夹 lib_management
)后,项目 A现在可以在项目 B 的暂存阶段中从源代码正确编译。
关于scala - sbt 直接 git 源依赖项 - 不获取传递库依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16197456/