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