Подтвердить что ты не робот

Если я запускаю развертывание mvn, он создает новые артефакты или просто развертывает уже существующие артефакты на удаленном сервере?

Примечание: Этот вопрос был первоначально отправлен Lahiru Gunathilake как ответ другому question. Я делаю это здесь как отдельный вопрос для ясности.

Когда мы делаем релиз, мы просто строим нашу локальную машину и выполняем QA, а затем размещаем ее в репозитории. Если мы запустим mvn deploy, это создаст новые артефакты, это приведет к различному артефакту в репозитории и в бинарном дистрибутиве, потому что мы создаем двоичный дистрибутив из нашего локального репозитория. Но если кто-то получит исходный код и сделает сборку, он получит другую. Но если mvn deploy не создает, а только разворачивает его.

4b9b3361

Ответ 1

Как объяснено в Основы жизненного цикла сборки:

Жизненный цикл сборки составлен из фаз

Каждый из этих жизненных циклов сборки определяется другим списком фаз сборки, где фаза сборки представляет собой этап в жизненном цикле.

Например, жизненный цикл по умолчанию имеет следующие этапы сборки (полный список фаз сборки см. в Справочник по жизненному циклу):

  • validate - проверить правильность проекта и получить всю необходимую информацию
  • compile - скомпилировать исходный код проекта
  • test - проверить скомпилированный исходный код с помощью подходящей модульной системы тестирования. Эти тесты не должны требовать, чтобы код был упакован или развернут.
  • package - взять скомпилированный код и упаковать его в свой распространяемый формат, например JAR.
  • integration-test - обрабатывать и развертывать пакет, если необходимо, в среду, в которой могут выполняться тесты интеграции.
  • verify - выполнить все проверки, чтобы убедиться, что пакет действителен и соответствует критериям качества.
  • install - установите пакет в локальный репозиторий, для использования в качестве зависимости в других проектах локально.
  • deploy - выполняется в среде интеграции или выпуска, копирует окончательный пакет в удаленный репозиторий для совместного использования с другими разработчиками и проектами.

Эти фазы сборки (плюс другие фазы сборки, не показанные здесь) выполняются последовательно для завершения жизненного цикла по умолчанию. Учитывая вышеописанные этапы сборки, это означает, что, когда используется жизненный цикл по умолчанию, Maven сначала проверит проект, затем попытается скомпилировать источники, запустить их против тестов, упаковать двоичные файлы (например, jar), выполнить интеграционные тесты против этого пакет, проверьте пакет, установите проверенный пакет в локальный репозиторий, затем разверните установленный пакет в указанной среде.

Чтобы сделать все это, вам нужно только вызвать последнюю фазу сборки, которая будет выполнена, в этом случае развернуть:

mvn deploy

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

Итак, ответ да, mvn deploy выполнит install и построит артефакты проекта. Но если вы ничего не измените, это даст точно такой же артефакт.