Развертывание Maven: принудительное развертывание, даже если артефакт уже существует

Я создаю проект, который состоит из нескольких (иногда несвязанных) модулей и еще нескольких нестандартных java-модулей (построенных с помощью ANT).

Каждый модуль maven развертывается в репозитории релизов по завершении.

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

Можно ли принудительно развертывать или вместо этого удалять развернутый артефакт перед повторным развертыванием?

Ответ 1

Похоже, что администраторы промежуточного программного обеспечения настроили ваш удаленный экземпляр репо (Nexus или Artifactory или что-то еще), чтобы не допускать перераспределения артефактов, и, как поясняет @khmarbaise, для этого есть веские причины. Nexus может быть сконфигурирован так, чтобы разрешить удаление артефактов пользователями в определенной роли или с привилегиями удаления артефактов. Если ваши администраторы настроены таким образом, возможно, вы можете запросить привилегию удаления и удалить повреждающие артефакты. Или, возможно, администратор Nexus согласится сделать это за вас.

Если ни одно из них не возможно, вот некоторые вещи, которые можно попытаться предотвратить в будущем:

  • Если вы используете плагин release, сначала выполните сухой запуск (-DdryRun=true в выпуске: подготовьте командную строку). Maven должен сообщать о любых ошибках, не передавая SCM.
  • Сначала попробуйте запустить mvn install в своей группе проектов. Это установит артефакты в локальное репо, а не на удаленный. Если есть проблема, вы можете ударить артефакты из своего локального репо и начать с нуля, повторяя, пока не получите полную сборку.
  • Если вы используете многомодульную сборку, есть параметры командной строки, которые позволяют возобновить сборку Maven из определенного проекта вперед.
  • Определите -Dmaven.deploy.skip=true в командной строке Maven. Это похоже на предложение №2, за исключением того, что Maven фактически загрузит и настроит развернуть плагин, он просто не выполнит фактическое развертывание на удаленном Сделки рЕПО. Как только все будет работать, удалите свойство пропуска.

Ответ 2

Я знаю, что может быть поздно, но в Nexus есть опция, позволяющая перераспределять артефакты.

введите описание изображения здесь

Просто выберите репозитории слева, выберите репозиторий, который вы хотите изменить, и установите для него значение Разрешить повторное развертывание.

Ответ 3

Возможные варианты были увеличены;)

Используйте параметр deployAtEnd (дополнительная информация: здесь). С помощью этого параметра артефакты развертываются только, если все артефакты были успешно построены.