SBT accessing sub directories

徘徊边缘 提交于 2019-12-10 16:47:32

问题


My project file structure looks like this:

  • build.sbt
  • lib
  • project
  • src
  • target
  • test

Inside lib folder I have sub folders that contain additional jar files. How can I get SBT to recognize sub-folders or to treat jar files recursively?

EDIT: thanks to @Jhonny Everson I am able to get this working. Here is how: added the following line in my build.sbt

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

Note that the base directory is where build.sbt is located.


回答1:


if you put jars on lib folder, Sbt will use them automatically. You can use unmanagedJars directive to specify multiple directories in which jar files can be found. See https://github.com/harrah/xsbt/wiki/Library-Management#manual-dependency-management




回答2:


I wanted to implement something like vim's pathogen and here's what I came up with:

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
}

Using sbt 0.13.x or any typesafe-activator relying on it, this will check /lib, /lib/* and /lib/*/target/scala-* for JARs and load them into the classpath. If the example isn't clear enough to understand what's going on, it might help to know that baseDirectory.value, libs, subs and targets are sbt.Pathfinder instances.



来源:https://stackoverflow.com/questions/16751113/sbt-accessing-sub-directories

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!