Версия моментального СНИМКА Maven не загружена из Nexus

#maven #nexus #sonatype #maven-metadata

#maven #nexus #sonatype #maven-метаданные

Вопрос:

В нашей среде работает Nexus Sonatype, в котором настроен другой 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:Mavenrepositories)
[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:MavenrepositoriescomcompanyteamMy.New.Dependency2.2-SNAPSHOTresolver-status.properties
[DEBUG] Writing resolution tracking file d:MavenrepositoriescomcompanyteamMy.New.Dependency2.2-SNAPSHOTresolver-status.properties
[DEBUG] Could not find metadata com.company.team:My.New.Dependency:2.2-SNAPSHOT/maven-metadata.xml in local (d:Mavenrepositories)
[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:MavenrepositoriescomcompanyteamMy.New.Dependency2.2-SNAPSHOTresolver-status.properties
[DEBUG] Writing resolution tracking file d:MavenrepositoriescomcompanyteamMy.New.Dependency2.2-SNAPSHOTresolver-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:MavenrepositoriescomcompanyteamMy.New.Dependency2.2-SNAPSHOTMy.New.Dependency-2.2-SNAPSHOT-vs2010-40-AnyCpu-Release.zip.lastUpdated
[DEBUG] Writing resolution tracking file d:MavenrepositoriescomcompanyteamMy.New.Dependency2.2-SNAPSHOTMy.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]
  

The 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 фактическим номером версии моментального снимка, как это делается для всех других зависимостей. Я также попробовал опции «Expire Cache» и «Обновить индекс» в пользовательском интерфейсе Nexus, но это не помогло. Что может привести к тому, что Maven вернется от фактического номера версии к -SNAPSHOT? Также нет записи в журнале, которая объясняла бы это.

Ответ №1:

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

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

Ответ №2:

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

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

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

Комментарии:

1. Я удалил файл и повторно запустил команду, но все равно она выдает ту же ошибку.

2. Воссоздан ли файл заново? В случае странного поведения, возможно, стоит удалить весь локальный репозиторий.

3. Да, файл воссоздан. Я также проверил машины некоторых других разработчиков, которые были более или менее чистыми. Также он завершается с той же ошибкой.

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