2013-11-22 45 views
1

在我的项目的根目录下,我有lib目录包含非托管罐子。 我想这个目录作为我的子项目中的默认非托管目录共享。 我尝试这样做:如何在多个子项目之间共享非托管目录?

lazy val project1 = Project(
    id = "project1", 
    base = file("project1"), 
    settings = buildSettings, 
    dependencies = Seq(otherProject)) 

project1.settings(unmanagedBase <<= baseDirectory { base => base.asFile.getParentFile() })  

不幸的是,当我做 “秀unmanagedBase” 我获得的,而不是 “./lib” “./project1/lib”。 似乎我的设置获得父母的基地没有效果。 欢迎任何帮助。

+0

我们已经在我们构建一个辅助功能,在这里做到这一点:https://github.com/sbt/sbt- remote-control/blob/master/project/Dependencies.scala#L74:L83 您可以在整个构建中看到它。希望有所帮助! – jsuereth

+0

谢谢,它肯定有帮助! – user3020699

回答

0

再次感谢您的回答,它的工作原理! 我不得不一行添加到您的小DSL将它们添加到unmanagedJars还有:

def dependsOnSource(dir: String): Seq[Setting[_]] = { 
     import Keys._ 
     Seq(unmanagedSourceDirectories in Compile <<= (unmanagedSourceDirectories in Compile, baseDirectory in ThisBuild) { (srcDirs, base) => (base/dir) +: srcDirs }, 
baseDirectory in ThisBuild) { (srcDirs, base) => (base/dir) +: srcDirs }, 
      unmanagedJars in Compile <++= (baseDirectory in ThisBuild) map { base => 
      ((base/dir) ** "*.jar").classpath 
      }, 

      unmanagedSourceDirectories in Test <<= (unmanagedSourceDirectories in Test, baseDirectory in ThisBuild) { (srcDirs, base) => (base/dir) +: srcDirs }) 
    } 
    implicit def p2source(p: Project): SourceDepHelper = new SourceDepHelper(p) 
    final class SourceDepHelper(p: Project) { 
     def dependsOnSource(dir: String): Project = 
     p.settings(Dependencies.dependsOnSource(dir): _*) 
    }