Подтвердить что ты не робот

Где найти загруженную библиотеку sbt?

Где sbt помещает загруженную банку? Я пытаюсь попросить sbt загрузить все зависимости и поместить их в каталог lib/, чтобы я мог использовать их с ScalaIDE, однако после того, как я побежал sbt compile успешно, я не знаю, где найти эти загруженные .jars

4b9b3361

Ответ 1

Все новые версии SBT (после 0.7.x) по умолчанию помещают загруженные JARS в каталог .ivy2 в вашем домашнем каталоге.

Если вы используете Linux, обычно это /home/<username>/.ivy2/cache.

Если вы используете Windows, обычно это c:\Users\<username>\.ivy2\cache.

EDIT:

Вот пример из одного из моих проектов, в котором я определяю задачу SBT, которая копирует зависимости в целевую папку. Вы можете поместить этот код в свой файл определения проекта project/Build.scala. У вас должно быть что-то подобное в файле определения проекта (подробнее на www.scala-sbt.org):

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

object MyProjectBuild extends Build {

Следующий код копирует все ваши библиотеки в подкаталог 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)

Ответ 2

Я нахожу зависимость sbt от http://mvnrepository.com/

например, вы хотите найти MySQL Java Connector, вы можете найти форму поиска и выбрать нужную вам версию, затем вы увидите тег sbt:

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

если вы хотите найти загруженные банки, в окнах C:\Users\<userName>\.ivy2\cache

в linux есть ~/.ivy2/cache

удача