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

时间:2011-04-06 10:11:58

标签: scala sbt

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

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

3 个答案:

答案 0 :(得分: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)

并在SBT控制台中通过collect-jars运行任务。这会将scala-library.jar和用于编译的jar复制到名为lib的目录中,与classes目录位于同一目录中。

答案 1 :(得分:2)

您可以使用sbt-assembly创建一个包含所有依赖项的胖jar:https://github.com/sbt/sbt-assembly

答案 2 :(得分:2)

在我的诚实意见中,不要为sbt-assembly而烦恼。我是scala的新人,但我与技术无关,我处理了很多技术并且装配它并不干净。只是一个意见。

我会建议你sbt-pack。很棒的工作。它还将为您提供可运行的脚本..WINDOWS和LINUX。

https://github.com/xerial/sbt-pack