4

我的项目文件结构如下所示:

  • 构建.sbt
  • 项目
  • 源代码
  • 目标
  • 测试

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 所在的位置。

4

2 回答 2

2

如果你把 jars 放在 lib 文件夹中,Sbt 会自动使用它们。您可以使用unmanagedJars指令来指定可以找到 jar 文件的多个目录。见https://github.com/harrah/xsbt/wiki/Library-Management#manual-dependency-management

于 2013-05-26T02:50:35.077 回答
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和是sbt.Pathfinder实例可能会有所帮助。libssubstargets

于 2015-03-30T22:49:52.093 回答