Динамическая библиотека зависимостей в sbt 0.13 не работает?

Я создаю несколько проектов Java с помощью sbt 0.13. Проект A публикует библиотеку «abc» в $HOME/maven2.artifacts/www/x/y/abc/1.0.1/abc-1.0.1.jar с задачей по умолчанию «публикация sbt». Работает, библиотека есть, как положено.

Проект B зависит от этого артефакта. Он объявляет преобразователь (весь код из build.sbt):

resolvers ++= Seq(
  "Developer's repo" at "file://"+Path.userHome.absolutePath+"/maven2.artifacts/www"
)

...и значение для ссылки:

val abc_core = "x.y" % "abc" % "1.0.1"

Затем он использует ссылку в определении проекта:

lazy val def_symbol=project settings(
  name:="def-symbol",
  libraryDependencies += abc_core
)

Это работает. Однако, когда я изменяю определение значения, чтобы использовать динамический идентификатор версии, как предлагает документация sbt, установив для него значение

val abc_core = "x.y" % "abc" % "1.0.+"

or

val abc_core = "x.y" % "abc" % "1.+"

больше не работает:

[warn]  module not found: x.y#abc;1.+
[warn] ==== local: tried
[warn]   /home/dh/.ivy2/local/x.y/abc/[revision]/ivys/ivy.xml
[warn] ==== public: tried
[warn]   http://repo1.maven.org/maven2/x/y/abc/[revision]/abc-[revision].pom
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: x.y#abc;1.+: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::

Я вижу, что sbt, похоже, не спрашивал у моего файлового распознавателя зависимость. В этом проблема? Как я могу это решить?


person Dirk Hillbrecht    schedule 26.11.2013    source источник


Ответы (1)


Хорошо,

задача решена. Мне пришлось объявить расширение резолвера в глобальной области видимости, чтобы подпроекты тоже его использовали:

resolvers in Global ++= Seq(
  "Developer's repo" at "file://"+Path.userHome.absolutePath+"/maven2.artifacts/www"
)

Затем проект def_symbol также использует «репозиторий разработчика», и все работает точно так, как ожидалось, с такими версиями, как "1.0.+" или "1.+".

Отсутствие распознавателя в глобальном масштабе, но наличие работающей библиотеки, тем не менее, было связано с тем, что версия 1.0.1 была доступна в локальном кеше Ivy из другой сборки. С нуля тоже не получилось бы.

Извините за шум. Я должен был подождать еще один день, прежде чем публиковать.

person Dirk Hillbrecht    schedule 27.11.2013