Зависимость mvn: ошибка purge-local-repository в многомодульном проекте

У нас есть такая структура проекта maven:

Parent
 L A
 L B

A зависит от B

Оба имеют различные зависимости от других библиотек.

Создание этого с помощью mvn clean install работает нормально, но когда мы пытаемся сократить все зависимости, как описано здесь с помощью

mvn dependency:purge-local-repository

Мы получаем сообщение об ошибке, что не удается разрешить зависимость от B:jar:snapshot-version:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.10:purge-local-repository (default-cli) on project A: Failed to refresh project dependencies for: A:jar:4.0.1-SNAPSHOT: required artifacts missing:
[ERROR] B:jar:6.0-5

Моя текущая интерпретация такова, что во время фактической сборки B сначала получает сборку и может быть разрешен, но во время очистки ничего не создается, поэтому разрешение не удается. Но проект есть, и его зависимости должны быть удалены. Как я могу это исправить?

-DactTransitively=false

похоже, ничего не меняет.


person Jens Schauder    schedule 27.04.2016    source источник
comment
Почему вы хотите очистить локальный кеш? Какую проблему вы пытаетесь решить?   -  person khmarbaise    schedule 27.04.2016
comment
@khmarbaise Мне нужно очистить кеш локального репозитория, потому что содержимое артефактов изменилось без изменения версии. Я полностью осознаю, что это неправильно на всех уровнях, но это то, что я не могу изменить (по крайней мере, прямо сейчас). Также у меня нет доступа к файловой системе, которая находится на CI-сервере.   -  person Jens Schauder    schedule 27.04.2016
comment
Задание на сервере CI должно иметь локальный кеш, а не весь сервер CI, потому что он автоматически заставляет все задания зависеть от этого кеша ... Я бы предложил сделать отдельное задание, которое удаляет эти вещи, не делает вызов maven для это ... В частности, если вы нарушаете неизменяемость артефактов версии выпуска, что приводит именно к таким проблемам и проблемам ...   -  person khmarbaise    schedule 27.04.2016


Ответы (2)


Хотя, похоже, это не та проблема, на которую ссылается @Tunaki, приведенный здесь пример позвольте мне попробовать следующее:

mvn dependency:purge-local-repository -DreResolve=false

Это избавило от исключения, но не смогло перезагрузить зависимость, с которой у меня были проблемы. В этот момент я наткнулся на этот ответ, который заставил меня попробовать

mvn dependency:purge-local-repository -DreResolve=false -DactTransitively=false

который решил проблему, хотя, похоже, запрашивает противоположное тому, чего я хотел достичь: - /

person Jens Schauder    schedule 27.04.2016
comment
Интересно. Это действительно выглядит очень странно ...! - person Tunaki; 27.04.2016
comment
Что ж, в проекте есть несколько «креативных» подходов. Возможно, происходит какая-то странная вещь, которую я только что пропустил. - person Jens Schauder; 27.04.2016
comment
Вторая команда просто пропускает все подмодули, поэтому на самом деле ничего не очищает. Похоже, нет никакого способа заставить этот плагин maven работать полезным образом. - person Matthew Read; 06.08.2021

Похоже, это ошибка maven-dependency-plugin (проблема JIRA MDEP-405), представленная регресс в Maven 3.0.4.

Из Комментарий Поля Гира:

Я думаю, что это происходит потому, что для определения полного набора транзитивных зависимостей, подлежащих удалению, должны быть доступны помы. Если помпы уже были разрешены в предыдущем модуле, Maven не будет повторно разрешать их снова и просто выйдет из строя. Таким образом, у зависимости нет проблемы с файлом, уже удаленным из локального репо, но код разрешения зависимостей maven не работает при попытке разрешить один и тот же файл дважды в одной и той же сборке.

Вы можете попробовать сборку с Maven 3.0.3, потому что в Maven 3.0.4 было изменение: http://mail-archives.apache.org/mod_mbox/maven-dev/201210.mbox/%3C5752023.Vp0WJBo1vZ%40bigmax%3E

Это связано с регрессией MNG-5366, которая в настоящее время не решена.

Я не вижу никакого реального обходного пути, кроме понижения версии Maven.

person Tunaki    schedule 27.04.2016
comment
Хотя это могло быть связано, похоже, проблема не в этом. Смотрите мой собственный ответ. Получите +1 за указатель. - person Jens Schauder; 27.04.2016