我的项目文件结构如下所示:
在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 :(得分:2)
如果你把jar放在lib文件夹上,Sbt会自动使用它们。您可以使用unmanagedJars
指令指定可以在其中找到jar文件的多个目录。见https://github.com/harrah/xsbt/wiki/Library-Management#manual-dependency-management
答案 1 :(得分:1)
我想实现类似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
,subs
和targets
是sbt.Pathfinder个实例