scala - sbt 直接 git 源依赖项 - 不获取传递库依赖项?

标签 scala sbt

我正在尝试使用 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/

相关文章:

scala - SBT:如何同时包含相同依赖项的普通 jar 和 test-jar

java - sbt 无法正确安装; Homebrew 程序更改Java版本

scala - 如何在自定义 sbt 命令中设置 javaOptions

scala - 如何用结果结尾的空字符串分割字符串?

Scala 检查映射中的值

scala - 在 scala 中的 Play 和控制台应用程序之间共享代码

scala - Parboiled2 导致 "missing or invalid dependency detected while loading class file ' Prepender.class'"

scala - 使用Spark检索聚集/存储桶

scala - parboiled2 非法规则构成

scala - 定义github依赖项时如何避免在IntelliJ中添加 'root' scala sbt项目?