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