Where does sbt put the downloaded jar? I'm trying to ask sbt to download all dependencies and put them under lib/ directory so I can use them with the ScalaIDE, however after I ran sbt compile
successfully I don't know where to find these downloaded .jars
Having said that, at the very beginning, sbt will always download its own internal dependencies, Scala including. It is then saved in ~/. sbt/boot .
Library dependencies can be added in two ways: unmanaged dependencies are jars dropped into the lib directory. managed dependencies are configured in the build definition and downloaded automatically from repositories.
You can use both managed and unmanaged dependencies in your SBT projects. If you have JAR files (unmanaged dependencies) that you want to use in your project, simply copy them to the lib folder in the root directory of your SBT project, and SBT will find them automatically.
All new SBT versions (after 0.7.x
) by default put the downloaded JARS into the .ivy2
directory in your home directory.
If you are using Linux, this is usually /home/<username>/.ivy2/cache
.
If you are using Windows, this is usually c:\Users\<username>\.ivy2\cache
.
EDIT:
Here's an example from one of my projects, in which I define an SBT task that copies the dependencies into the target folder. You can place this code into your project/Build.scala
project definition file. You should have something like this in your project definition file (more info at www.scala-sbt.org):
import sbt._ import Keys._ import Process._ object MyProjectBuild extends Build {
The following code copies all your libraries to a deploy/libz
subdirectory, by defining a deploy
task that captures your program artifact and all its classpath dependencies:
val deployKey = TaskKey[Unit]( "deploy", "Deploys the project in the `deploy` subdirectory." ) val deployTask = deployKey <<= (artifactPath in (Compile, packageBin), dependencyClasspath in Compile) map { (artifact, classpath) => val deploydir = new File("deploy") val libzdir = new File("deploy%slib".format(File.separator)) // clean old subdirectory deploydir.delete() // create subdirectory structure deploydir.mkdir() libzdir.mkdir() // copy deps and artifacts val fullcp = classpath.map(_.data) :+ artifact def lastName(file: File) = if (file.isFile) file.getName else file.getParentFile.getParentFile.getParentFile.getName for (file <- fullcp) { println("Copying: " + file + "; lastName: " + lastName(file)) if (file.isFile) IO.copyFile(file, (libzdir / lastName(file)).asFile); else IO.copyDirectory(file, (libzdir / lastName(file))) } } dependsOn (packageBin in Compile)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With