2
我正在尝试使用Github托管的git存储库(“项目A”)的sbt的直接dependsOn
功能。我正在使用一个稳定的标签引用,并在我的测试项目(“项目B”)中,做了从源项目克隆项目A并开始编译。然而,编译失败,项目A自己的依赖关系似乎缺失(即似乎没有收到项目A的build.sbt
中定义的任何东西)。sbt直接git源依赖 - 不提取传递库依赖?
这是从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"
的库依赖关系吗?我希望不是!
我用这个功能在一些项目中并没有遇到过这个问题。建议:确保build.sbt在根目录下;创建一个Build.scala并在那里声明依赖关系。当然,我认为你可以分解项目A并不是什么大不了的事情。 – pedrofurla 2013-04-24 16:55:27
@pedrofurla好的,所以这是个好消息,因为它应该在理论上工作。我在根目录下有'build.sbt',项目A没有单独的'project/Build.scala',所以它肯定是一些小故障,我猜?可以'retrieveManaged:= true'是一个问题(我在每个项目中都使用它,因为这是我可以合理地监督库版本和快照与稳定的东西的唯一方式)? – 2013-04-24 18:36:42