告诉SBT将所有依赖项收集在一起

Bro*_*nie 18 scala sbt

构建Web应用程序时,SBT能够将所有jar依赖项收集到WAR文件中.

是否可以让SBT将我依赖的所有罐子放在我的非Web应用程序中的目录中,以便在运行应用程序时可以轻松地将它们放到我的类路径中?

Mor*_*itz 10

是的,您可以在项目定义类中添加这样的内容:

val libraryJarPath = outputPath / "lib"

def collectJarsTask = {
  val jars = mainDependencies.libraries +++ mainDependencies.scalaJars
  FileUtilities.copyFlat(jars.get, libraryJarPath, log)
}

lazy val collectJars = task { collectJarsTask; None } dependsOn(compile)
Run Code Online (Sandbox Code Playgroud)

collect-jars在您的SBT控制台中运行任务.这会将scala-library.jar和用于编译的jar复制到lib与目录相同的目录中调用的classes目录中.

  • 对我有用的实际版本是:def collectJarsTask = {val jars = publicClasspath.get.filter(x =>!x.isDirectory)FileUtilities.copyFlat(jars,libraryJarPath,log)} (2认同)