SBT не находит файл в локальном хранилище maven, хотя он там
У меня проблемы с зависимостью maven, которая находится в моем локальном репозитории.
SBT не может найти его. Уже установлен уровень журнала для отладки, но не получает ничего нового.
Файлы находятся в репозитории. Я копирую пути вставки из консоли в файл-проводник, и они есть.
Выход:
[debug] trying file://c:/Users/userz/.m2/repository/com/twitter/naggati/2.0.0/naggati-2.0.0.pom
[debug] tried file://c:/Users/userz/.m2/repository/com/twitter/naggati/2.0.0/naggati-2.0.0.pom
[debug] Local Maven Repository: resource not reachable for com/twitter#naggati;2.0.0: res=file://c:/Users/userz/.m2/repository/com/twitter/naggati/2.0
.0/naggati-2.0.0.pom
[debug] trying file://c:/Users/userz/.m2/repository/com/twitter/naggati/2.0.0/naggati-2.0.0.jar
[debug] tried file://c:/Users/userz/.m2/repository/com/twitter/naggati/2.0.0/naggati-2.0.0.jar
[debug] Local Maven Repository: resource not reachable for com/twitter#naggati;2.0.0: res=file://c:/Users/userz/.m2/repository/com/twitter/naggati/2.0
.0/naggati-2.0.0.jar
[debug] Local Maven Repository: no ivy file nor artifact found for com.twitter#naggati;2.0.0
Изменить: я добавил путь, используя scala файл в проекте/сборке, как описано в http://code.google.com/p/simple-build-tool/wiki/LibraryManagement
"sbt может искать ваш локальный репозиторий Maven, если вы добавите его в качестве репозитория:"
val mavenLocal = "Local Maven Repository" at "file://"+Path.userHome+"/.m2/repository"
Это заставило sbt посмотреть в локальном репозитории. До этого не было.
Итак, файл scala выглядит следующим образом:
import sbt._
class Foo(info: ProjectInfo) extends DefaultProject(info) {
val mavenLocal = "Local Maven Repository" at "file://c:/Users/userz/.m2/repository"
}
(I hardcoded Path.userHome, чтобы исключить возможную причину ошибки. Как и ожидалось, это ничего не изменило).
Ответы
Ответ 1
После спецификатора file:
вам нужно три слэша. Это связано с тем, что между вторым и третьим косой чертой вы имеете необязательное имя хоста. Wikipedia имеет хорошее объяснение file:
URL
У вас возникла проблема, потому что типичный шаблон "file://"+Path.userHome+"/.m2/repository"
предполагает файловую систему Unix, где путь начинается с /
, не содержит :
и обычно не содержит пробелов.
Чтобы иметь нестрочный путь, который работает как для Windows, так и для Linux/Unix, используйте:
"Local Maven" at Path.userHome.asFile.toURI.toURL + ".m2/repository"
Ответ 2
Просто добавьте эту строку в файл build.scala или build.sbt
resolvers += Resolver.mavenLocal
Ответ 3
Чтобы заставить это работать для более новых версий sbt, добавьте следующее в build.sbt:
resolvers += "Local Maven Repository" at "file:///"+Path.userHome+"/.m2/repository"
Ответ 4
Остерегайтесь, когда у вас есть определенный проект, вам нужно будет включить распознаватель в настройках. Глобальный распознаватель не будет идентифицирован.
Пример:
lazy val core = (project in file("core")).
settings(commonSettings: _*).
settings(
resolvers += Resolver.mavenLocal,
name := "Core",
libraryDependencies := coreDependencies
)