简体   繁体   中英

where to find downloaded library of 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

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)

I find the sbt dependency from http://mvnrepository.com/

for example, you want to find MySQL Java Connector , you can search form the search box, and choose a version you like, then you will see sbt tag:

libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.34"

if you want to find the downloaded jars, in windows is C:\Users\<userName>\.ivy2\cache

in linux is ~/.ivy2/cache

good luck

The reference below is useful for sbt.

https://www.scala-sbt.org/1.x/docs/Launcher-Configuration.html

You can find sbt.ivy.home is the parameter and default is ${user.home}/.ivy2/.

...

[repositories] local typesafe-ivy-releases: http://repo.typesafe.com/typesafe/ivy-releases/ , [organization]/[module]/[revision]/[type]s/artifact.[ext], bootOnly maven-central sonatype-snapshots: https://oss.sonatype.org/content/repositories/snapshots

[boot] directory: ${sbt.boot.directory-${sbt.global.base-${user.home}/.sbt}/boot/}

[ivy] ivy-home: ${sbt.ivy.home-${user.home}/.ivy2/}

...

In more recent versions (1.3+), sbt has switched to Coursier instead of Ivy for fetching dependencies.

The Coursier cache varies by operating system . According to the linked docs, the default values are:

  • on Linux, ~/.cache/coursier/v1
  • on OS X, ~/Library/Caches/Coursier/v1.
  • on Windows, %LOCALAPPDATA%\Coursier\Cache\v1

You can also find the value with show csrCacheDirectory from inside SBT.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM