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

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, чтобы исключить возможную причину ошибки. Как и ожидалось, это ничего не изменило).

4b9b3361

Ответ 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
  )