Версия Maven SNAPSHOT не загружается из Nexus

В нашей среде работает Sonatype Nexus, в котором настроен другой Nexus в качестве прокси-репозитория. Когда мы потребляем наши зависимости, мы запрашиваем их у Nexus. Это работало нормально до вчерашнего дня, когда я добавил новую зависимость в наш проект.

Кажется, что Maven неправильно разрешает развернутые версии моментальных снимков. В журнале maven я вижу, что он загружает maven-metadata.xml, но когда он пытается загрузить zip-файл, содержащий наши двоичные файлы, он не заменяет -SNAPSHOT текущей версией моментального снимка.

> mvn -f My.Product.dependencies.xml process-resources -DConfiguration=AnyConfig -U -X

[DEBUG] Could not find metadata com.company.team:My.New.Dependency:2.2-SNAPSHOT/maven-metadata.xml in local (d:\Maven\repositories)
[DEBUG] Using connector WagonRepositoryConnector with priority 0 for http://buildserver:8082/nexus/content/groups/company
Downloading: http://buildserver:8082/nexus/content/groups/company/com/company/team/My.New.Dependency/2.2-SNAPSHOT/maven-metadata.xml
Downloaded: http://buildserver:8082/nexus/content/groups/company/com/company/team/My.New.Dependency/2.2-SNAPSHOT/maven-metadata.xml (850 B at 13.2 KB/sec)
[DEBUG] Reading resolution tracking file d:\Maven\repositories\com\company\team\My.New.Dependency\2.2-SNAPSHOT\resolver-status.properties
[DEBUG] Writing resolution tracking file d:\Maven\repositories\com\company\team\My.New.Dependency\2.2-SNAPSHOT\resolver-status.properties
[DEBUG] Could not find metadata com.company.team:My.New.Dependency:2.2-SNAPSHOT/maven-metadata.xml in local (d:\Maven\repositories)
[DEBUG] Using connector WagonRepositoryConnector with priority 0 for http://buildserver:8082/nexus/content/groups/company
Downloading: http://buildserver:8082/nexus/content/groups/company/com/company/team/My.New.Dependency/2.2-SNAPSHOT/maven-metadata.xml
Downloaded: http://buildserver:8082/nexus/content/groups/company/com/company/team/My.New.Dependency/2.2-SNAPSHOT/maven-metadata.xml (850 B at 55.3 KB/sec)
[DEBUG] Reading resolution tracking file d:\Maven\repositories\com\company\team\My.New.Dependency\2.2-SNAPSHOT\resolver-status.properties
[DEBUG] Writing resolution tracking file d:\Maven\repositories\com\company\team\My.New.Dependency\2.2-SNAPSHOT\resolver-status.properties
...
Downloading: http://buildserver:8082/nexus/content/groups/company/com/company/team/My.New.Dependency/2.2-SNAPSHOT/My.New.Dependency-2.2-SNAPSHOT-vs2010-40-AnyCpu-Release.zip
[DEBUG] Reading resolution tracking file d:\Maven\repositories\com\company\team\My.New.Dependency\2.2-SNAPSHOT\My.New.Dependency-2.2-SNAPSHOT-vs2010-40-AnyCpu-Release.zip.lastUpdated
[DEBUG] Writing resolution tracking file d:\Maven\repositories\com\company\team\My.New.Dependency\2.2-SNAPSHOT\My.New.Dependency-2.2-SNAPSHOT-vs2010-40-AnyCpu-Release.zip.lastUpdated
[INFO] ------------------------------------------------------------------------
...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] My.Client.App  FAILURE [1.922s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.687s
[INFO] Finished at: Thu Oct 13 09:54:24 CEST 2016
[INFO] Final Memory: 9M/177M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project My.Client.App: Could not resolve dependencies for project com.company.team2:My.Client.App:pom:7.0-SNAPSHOT: The following artifacts could not be resolved: com.company.team:My.New.Dependency:zip:vs2010-40-AnyCpu-Release:2.2-SNAPSHOT: Could not find artifact com.company.team:My.New.Dependency:zip:vs2010-40-AnyCpu-Release:2.2-SNAPSHOT in company (http://buildserver:8082/nexus/content/groups/company) -> [Help 1]

maven-metadata.xml правильно содержит информацию о версии моментального снимка:

<?xml version="1.0" encoding="UTF-8"?>
<metadata modelVersion="1.1.0">
  <groupId>com.company.team</groupId>
  <artifactId>My.New.Dependency</artifactId>
  <version>2.2-SNAPSHOT</version>
  <versioning>
    <snapshot>
      <timestamp>20161011.235855</timestamp>
      <buildNumber>102</buildNumber>
    </snapshot>
    <lastUpdated>20161011235855</lastUpdated>
    <snapshotVersions>
      <snapshotVersion>
        <extension>pom</extension>
        <value>2.2-20161011.235855-102</value>
        <updated>20161011235855</updated>
      </snapshotVersion>
      <snapshotVersion>
        <classifier>vs2010-40-AnyCPU-Release</classifier>
        <extension>zip</extension>
        <value>2.2-20161011.235855-102</value>
        <updated>20161011235855</updated>
      </snapshotVersion>
    </snapshotVersions>
  </versioning>
</metadata>

Когда я проверяю список каталогов папки, из которой он загружает материал, версия 2.2-20161011.235855-102 находится там правильно:

Список каталогов Nexus

Все остальные зависимости из того же репозитория работают нормально, только новая не скачивается. В настоящее время меня сводит с ума тот факт, что Maven не заменяет -SNAPSHOT фактическим номером версии моментального снимка, как это делается для всех других зависимостей. Я также попробовал параметры «Срок действия кэша» и «Обновить индекс» в пользовательском интерфейсе Nexus, но это не помогло. Что может привести к тому, что Maven откажется от фактического номера версии до -SNAPSHOT? Также нет записи в журнале, которая объясняла бы это.


person Danielku15    schedule 13.10.2016    source источник


Ответы (2)


Попробовав 1 миллион вещей и сравнив конфигурацию других зависимостей с новыми, я наконец нашел проблему: идентификаторы артефактов (классификаторы) чувствительны к регистру. В моем POM-файле клиента я имел в виду vs2010-40-AnyCpu-Release, но развернуто — vs2010-40-AnyCPU-Release (обратите внимание на заглавную AnyCPU).

В лог-файле видно, что он пытается скачать файл с AnyCpu в нижнем регистре. После того, как я изменил его на верхний регистр, это сработало.

person Danielku15    schedule 13.10.2016

У вас есть файл

My.New.Dependency-2.2-SNAPSHOT-vs2010-40-AnyCpu-Release.zip.lastUpdated

в вашем локальном репозитории. Попробуйте удалить его. Это может заблокировать Maven от повторной попытки загрузки.

person J Fabian Meier    schedule 13.10.2016
comment
Я удалил файл и повторно запустил команду, но все равно возникает та же ошибка. - person Danielku15; 13.10.2016
comment
Файл воссоздан? В случае странного поведения, возможно, стоит стереть весь локальный репозиторий. - person J Fabian Meier; 13.10.2016
comment
Да, файл воссоздан. Я также проверил на машинах некоторых других разработчиков, которые были более или менее чистыми. Тоже вылетает с той же ошибкой. - person Danielku15; 13.10.2016
comment
По стечению обстоятельств я обнаружил проблему после того, как поигрался и изменил вещи. Пожалуйста, смотрите мой ответ ниже. Спасибо за вашу помощь. - person Danielku15; 13.10.2016