sbt未解决的传递依赖

时间:2013-02-26 20:26:43

标签: sbt

我似乎无法正确配置SBT以解决我的项目所依赖的RootProject的传递依赖性。问题似乎是解决方案。我已经能够用非常简单的结构复制它。请参阅下面的代码。

在common /我可以运行sbt console,它将解决依赖关系,我可以使用它。但是在proj /内部命令失败。与UNRESOLVED DEPENDENCIES。但我的edofic snapshots解析器未列在经过试用的解析器中。不知怎的,它没有被拿起来。如果我手动将解析器添加到Build.scala,它会起作用,但这会破坏传递依赖的目的。

├── common
│   └── build.sbt
└── proj
    └── project
        └── Build.scala

公共/ build.sbt

scalaVersion := "2.10.0"

resolvers += "edofic snapshots" at "http://edofic.github.com/repository/snapshots"

libraryDependencies += "com.edofic" % "reactivemacros_2.10.0" % "0.1-SNAPSHOT"

凸出/项目/ Build.scala

import sbt._
import Keys._

object BarBuild extends Build {
  val common = RootProject(file("../common"))

  val main = Project(id = "main", base = file(".")).settings(
    scalaVersion := "2.10.0"
  ) dependsOn common
}

只是为了说清楚:我想为“common”分别设置SBT,我不想在本地发布它 - 我希望SBT在需要时处理增量重新编译。 RootProject是错误的工具吗?

1 个答案:

答案 0 :(得分:0)

这是一个对我有用的解决方案,但它可能会破坏别的东西:
proj / project / Build.scala 中,在项目定义中添加“delegates”参数,如下所示:

val main = Project(id = "main", base = file("."), 
                   delegates = common :: Nil).settings(
  scalaVersion := "2.10.0"
) dependsOn common

我认为这可能会导致您的“主要”项目从“常见”项目中获取所有配置,因此我不确定可能产生的副作用。因此,我为我的项目选择的解决方案是拥有一个“配置”项目,该项目具有我所有项目的通用配置,并使用该项目的“委托”,以便我可以控制正在拾取的配置。