2013-05-25 116 views
3

我的項目文件結構如下所示:SBT訪問子目錄

  • build.sbt
  • LIB
  • 項目
  • SRC
  • 目標
  • 測試

裏面lib文件夾我有包含其他jar文件的子文件夾。我怎樣才能讓SBT識別子文件夾或遞歸處理jar文件?

編輯: 感謝@Jhonny Everson我能夠得到這個工作。這裏是如何: 添加下面一行在我build.sbt

unmanagedJars in Compile <++= baseDirectory map { base => 
     val baseDirectories = (base/"lib"/"mycustomlib") 
     val customJars = (baseDirectories ** "*.jar") 
     customJars.classpath 
} 

注意,基本目錄是build.sbt所在。

+0

+1因爲您添加了作爲編輯工作的解決方案。這在搜索答案時非常有用。謝謝。 – redeagle47

回答

0

我想要實現的東西像vim的病原體和這裏就是我想出了:

unmanagedJars in Compile ++= { 
    val libs = baseDirectory.value/"lib" 
    val subs = (libs ** "*") filter { _.isDirectory } 
    val targets = ((subs/"target") ** "*") filter {f => f.name.startsWith("scala-") && f.isDirectory} 
    ((libs +++ subs +++ targets) ** "*.jar").classpath 
} 

使用SBT 0.13.x或任何類型安全的激活劑依靠它,這將檢查/lib/lib/*/lib/*/target/scala-*用於JAR並將它們加載到類路徑中。如果該示例不夠清楚以瞭解發生了什麼,則可能有助於知道baseDirectory.value,libs,substargetssbt.Pathfinder個實例。