Reputation: 7738
When building a web application SBT is able to collect all my jar dependencies into the WAR file.
Is this possible to have SBT put all the jars I depend on in my non-web application into a directory so I can easily put them onto my class path when running the app?
Upvotes: 19
Views: 6899
Reputation: 719
In my honest opinion don't bother with sbt-assembly. I'm new with scala but I'm quite technology agnostic, I handle a lot of technologies and sbt-assembly it's not clean. Just an opinion.
I would recommend you sbt-pack. Awesome piece of work. It will give you the runnable scripts as well, for both.. WINDOWS AND LINUX.
https://github.com/xerial/sbt-pack
Upvotes: 3
Reputation: 29
You can use sbt-assembly to make a fat jar with all dependencies: https://github.com/sbt/sbt-assembly
Upvotes: 2
Reputation: 14212
Yes, you can put something like this in your project definition class:
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)
and run the task via collect-jars
in your SBT console. This will copy the scala-library.jar and the jars used for compilation in a directory called lib
in the same directory as your classes
directory.
Upvotes: 12