在哪里可以找到下载的sbt库?

fir*_*yer 26 java scala sbt

sbt把下载的jar放在哪里?我试图让sbt下载所有依赖项并将它们放在lib /目录下,这样我就可以将它们与ScalaIDE一起使用,但是在我sbt compile成功运行之后我不知道在哪里可以找到这些下载的.jars

axe*_*l22 24

0.7.x默认情况下,所有新的SBT版本(之后)都会将下载的JARS放入主.ivy2目录中的目录中.

如果您使用的是Linux,通常就是这样/home/<username>/.ivy2/cache.

如果您使用的是Windows,通常就是这样c:\Users\<username>\.ivy2\cache.

编辑:

这是我的一个项目的示例,其中我定义了一个将依赖项复制到目标文件夹的SBT任务.您可以将此代码放入project/Build.scala项目定义文件中.您应该在项目定义文件中有这样的内容(更多信息请访问www.scala-sbt.org):

import sbt._
import Keys._
import Process._

object MyProjectBuild extends Build {
Run Code Online (Sandbox Code Playgroud)

以下代码deploy/libz通过定义deploy捕获程序工件及其所有类路径依赖关系的任务,将所有库复制到子目录:

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)
Run Code Online (Sandbox Code Playgroud)


小智 14

在更新的版本(1.3+)中,sbt已切换到 Coursier 而不是 Ivy 来获取依赖项。

Coursier 缓存因操作系统而异。根据链接的文档,默认值是:

  • 在 Linux 上,~/.cache/coursier/v1
  • 在 OS X 上,〜/Library/Caches/Coursier/v1。
  • 在 Windows 上,%LOCALAPPDATA%\Coursier\Cache\v1

show csrCacheDirectory您还可以从 SBT 内部找到该值。