2

我正在dependsOn使用托管在 Github 的 git 存储库(“项目 A”)来尝试 sbt 的直接功能。我正在使用稳定的标记引用,并且在我的测试项目(“项目 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"?我希望不是!

4

1 回答 1

2

这纯粹是我自己的错,不是 sbt 的。我在项目 A 中监督了一个非托管库(文件夹lib)。在将其交换为 Maven 托管版本(文件夹lib_managed)之后,项目 A 现在可以从项目 B 的暂存中的源代码正确编译。

于 2013-04-30T10:58:12.987 回答