Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

where to find downloaded library of sbt?

Tags:

java

scala

sbt

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

like image 438
firstprayer Avatar asked Nov 23 '14 21:11

firstprayer


People also ask

Where does sbt download Scala?

Having said that, at the very beginning, sbt will always download its own internal dependencies, Scala including. It is then saved in ~/. sbt/boot .

What are library dependencies in sbt?

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.

How do we specify library dependencies in sbt?

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.


1 Answers

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) 
like image 103
axel22 Avatar answered Oct 09 '22 02:10

axel22