2015-07-20 26 views
0

我有一个包含两个项目的Build。 我想让根项目类路径依赖于子项目,但仅限于某些配置。简化项目的配置:SBT`dependsOn`每个配置的依赖关系

子项目:

object HttpBuild{ 

    import Dependencies._ 

lazy val http: Project = Project(
    "http", 
    file("http"), 
    settings = 
    CommonSettings.settings ++ 
    Seq(
     version := "0.2-SNAPSHOT", 
     crossPaths := false, 
     libraryDependencies ++= akkaActor +: spray) ++ 
    Packaging.defaultPackageSettings 
)} 

根:

object RootBuild extends Build { 
import HttpBuild._ 
lazy val http = HttpBuild.http 

lazy val MyConfig = config("myconfig") extend Compile 

private val defaultSettings = Defaults.coreDefaultSettings 

lazy val api = Project("root", file(".")) 
.configs(MyConfig) 
.settings(defaultSettings: _*) 
.dependsOn(HttpBuild.http % MyConfig) 
} 

现在,如果我输入myconfig:compile我希望有我的根项目,子项目编译,但它似乎并没有发生。

如果我离开像这样的dependsOn(HttpBuild.http)这样的依赖关系,它会进行编译,但每次都会发生,无论使用哪种配置。

+0

您不想让2个对象扩展Build。应该只有1个版本。 –

+0

@DaleWijnand真的,谢谢。我已经修复了描述 – SergeyPopov

回答

0

你看过this example。我不是专家,在这里,但上面的代码比较,差异似乎是

  • 一个CustomCompile配置定义,并作为classpathConfiguration in Common := CustomCompile
  • 的依赖关系是间接的http % "compile->myconfig"

也许试着更接近那个例子。