2013-02-26 110 views
2

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

内部公共/我可以运行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 
} 

只是为了把事情说清楚:我想有单独的SBT配置对于“通用”,我不想在本地发布它 - 我想让SBT在需要时处理增量重新编译。 RootProject是这项工作的错误工具吗?

回答

0

这里是为我工作的解决方案,但它可能它可能会破坏别的东西:
凸出/项目/ Build.scala添加一个“代表”的说法你的项目定义是这样的:

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

我认为这可能会导致您的“主”项目从“普通”项目中获取所有配置,因此我不确定可能存在哪些副作用。由于这个原因,我为我的项目选择的解决方案是有一个“配置”项目,它具有所有项目的通用配置,并在该项目中使用“委托”,因此我可以控制正在拾取的配置。