2016-06-08 2 views
0

У меня есть проект SBT, который использует внутренний репозиторий Nexus для получения некоторых из его зависимостей. Когда я бегу update, я вижу следующие предупреждающие сообщения:Неразрешенная зависимость в SBT: нет файла плюща

[info] Resolving foo.bar.baz#foobar;2.0.1 
... 
[debug]  The Repo of Interest: no ivy file found for foo.bar.baz#foobar;2.0.1 
[warn] module not found: foo.bar.baz#foobar;2.0.1 
[warn] ==== local: tried 
... 
... several irrelevant repositories omitted... 
... 
[warn] ==== The Repo of Interest: tried 
[warn] http://internal.url.com/nexus/content/repositories/releases/foo/bar/baz/foobar/2.0.1/foobar-2.0.1.pom 
... 
... some other repositories omitted... 
... 

URL-адрес показано выше, кажется, как он должен работать, потому что я могу открыть POM в браузере без проблем (обратите внимание, что я изменял URL, чтобы вы я должен сказать, что он работает). Еще более озадачивает тот факт, что я вижу эту проблему только при попытке построить на определенных машинах. Как я даже начинаю отлаживать эту проблему? Есть ли дополнительные записи, которые я мог бы включить, чтобы понять, почему SBT/Ivy игнорирует POM, расположенную по указанному выше URL-адресу?

UPDATE: Мой build.sbt определяет арбитры следующим образом:

resolvers := Seq(
    ..., 
    "The Repo of Interest" at "http://internal.url.com/nexus/content/repositories/releases", 
    ... 
) 

Также папка http://internal.url.com/nexus/content/repositories/releases/foo/bar/baz/foobar/2.0.1 имеет POM, банку, банку источников и связанные с ним и sha1 md5 для всех этих файлов. Файл П выглядит следующим образом:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>foo.bar.baz</groupId> 
    <artifactId>foobar</artifactId> 
    <version>2.0.1</version> 
    <dependencies> 
    ... 
    </dependencies> 
</project> 

UPDATE # 2: сборки появились только работать на других машины, потому что они уже имели копию соответствующей банки кэшированной под ~/.ivy2/cache/foo/bar/baz/foobar/jars.

UPDATE # 3: После того, глядя на входе чуть более внимательно, я считаю The Repo of Interest: no ivy file found for foo.bar.baz#foobar;2.0.1 является истинным сообщение об ошибке

+0

Не могли бы вы взглянуть на конфигурацию вашего резонатора «Репо интерес». Наиболее типичные проблемы: (1) Путь артефакта Resolver настроен неправильно, (2) Resolver не работает в режиме Maven. Вы можете просмотреть свои решения с помощью консоли sbt - проверить преобразователи –

+0

Я обновил вопрос, чтобы показать, как определяется определитель в файле build.sbt. Я считаю, что он определен для использования формата Maven, и именно поэтому он ищет файл pom в первую очередь. «Инспекция распознавателей» не дает подробностей. Он показывает: '[info] Setting: scala.collection.Seq [sbt.Resolver] = List (..., Repo of Interest: http://internal.url.com/nexus/content/repositories/releases,. ..) ' –

+1

Не используйте': = '. Вы отменяете все настройки. Просто добавьте новые резольверы: 'resolvers в Global ++ = Seq (...)' или 'resolvers в Global + = ...'. –

ответ

1

Благодарим вас за все предложения! Оказывается, ответ в моем конкретном случае был неловко прост: URL-адрес репозитория должен был начинаться с https вместо http. Я просто случайно наткнулся на это решение после того, как пытаться использовать Coursier's command line tool вручную принести банку с командами, как:

coursier fetch -r http://internal.url.com/nexus/content/repositories/releases foo.bar.baz:foobar:2.0.1 

Который затем произвел вывод, который выглядел что-то вроде:

Error: 
    foo.bar.baz:foobar:2.0.1 
    not found: /some/path/.ivy2/local/foo.bar.baz/foobar/2.0.1/ivys/ivy.xml 
    not found: https://repo1.maven.org/maven2/foo/bar/baz/foobar/2.0.1/foobar-2.0.1.pom 
    checksum format error: ... 

Это казалось странным, что не было not found: http://internal.url.com/nexus/content/repositories/releases... линии, и я просто подумал, что, возможно, URL-адрес должен начинаться с https.

0

Убедитесь, что сервер нексус доступен через все компьютеры в сети. Также попробуйте принудительно обновить свое репо. Раньше у меня возникали проблемы, когда в папке nexus был файл pom, но не было связанных файлов jar, поэтому убедитесь, что есть артефакты, связанные с pom

+0

Можете ли вы пояснить, что вы подразумеваете под «силой, обновляющей ваше репо?» –

Смежные вопросы