Где sbt положить загруженный банку? Я пытаюсь попросить sbt загрузить все зависимости и поместить их в каталог lib /, чтобы я мог использовать их с помощью ScalaIDE, однако после того, как я побежал sbt compile
, я не знаю, где их найти. JarsГде найти загруженную библиотеку sbt?
ответ
Все новые версии 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)
я найти зависимость от SBT http://mvnrepository.com/
, например, Вы хотите найти MySQL Java Connector
, вы можете искать сформировать форму поиска, и выберите версию, которую вы любите, то вы увидите sbt
тег:
libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.34"
, если вы хотите, чтобы найти загруженные банки, в окнах C:\Users\<userName>\.ivy2\cache
в Linux является ~/.ivy2/cache
удачи
Thx. Но можно ли каким-либо образом сказать, что SBT напрямую загружает зависимости в каталог my/lib? – firstprayer
Я добавил пример, надеюсь, это поможет. – axel22