我似乎无法正确配置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是错误的工具吗?
答案 0 :(得分:0)
这是一个对我有用的解决方案,但它可能会破坏别的东西:
在 proj / project / Build.scala 中,在项目定义中添加“delegates”参数,如下所示:
val main = Project(id = "main", base = file("."),
delegates = common :: Nil).settings(
scalaVersion := "2.10.0"
) dependsOn common
我认为这可能会导致您的“主要”项目从“常见”项目中获取所有配置,因此我不确定可能产生的副作用。因此,我为我的项目选择的解决方案是拥有一个“配置”项目,该项目具有我所有项目的通用配置,并使用该项目的“委托”,以便我可以控制正在拾取的配置。