构建Web应用程序时,SBT能够将所有jar依赖项收集到WAR文件中。
这是否可以让SBT将我依赖的所有jars放入我的非Web应用程序中的目录中,以便在运行应用程序时可以轻松地将它们放到我的类路径中?
答案 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。